Redis-string类型操作命令

APPEND key value

如果key已经存在,并且为字符串,那么这个命令会把value追加到原来值的末尾。如果key不存在,首先创建一个空字符串,再执行追加操作。

返回值:返回APPEND后字符串的长度。

  1. EXISTS mykey
  2. 0
  3. APPEND mykey "Hello"
  4. 5
  5. APPEND mykey " world"
  6. 11
  7. GET mykey
  8. Hello world

SETBIT

SETBIT key offset value

对key所存储的字符串值,设置或清除指定偏移量上的位(bit)。

位的设置或清除取决于value参数。

当key不存在时,自动生成一个新的字符串值。

  1. SETBIT bit 100861
  2. 0
  3. SETBIT bit 100861
  4. 1
  5. GETBIT bit 10086
  6. 1
  7. GETBIT bit 100
  8. 0

BITCOUNT

BITCOUNT key [start] [end]

计算给定字符串中,被设置为1 的比特位的数量。对于不存在的字符串,BITCOUNNT操作返回0。

返回值:被设置为1的位的数量。

  1. BITCOUNT bits
  2. 0
  3. SETBIT bits 01
  4. 0
  5. BITCOUNT bits
  6. 1
  7. SETBIT bits 31
  8. 0
  9. BITCOUNT bits
  10. 2
  • 模式:使用bitmap实现用户上线次数统计

可以使用SETBIT key为网站上线的天数,value为1,来确定用户在某天在线,从而统计出用户的上线天数。如设置Peter在第101天在线,则可以使用:

  1. SETBIT peter 1011

依次类推。最后统计即可获取用户在线天数。

GETBIT key offset

对key所存储的字符串值,获取指定偏移量上的位。

当offset比字符串的长度大,或者key不存在时,返回0。

  1. EXISTS bit
  2. 0
  3. GETBIT bit 10086
  4. 0
  5. SETBIT bit 41
  6. 0
  7. GETBIT bit 4
  8. 1

DECR

将key中存储的数字值减一。

如果key不存在,那么会初始化key值为0,然后惊醒DECR操作。操作限制在64位有符号数字内,

返回值:执行DECR命令后的key值。

  1. SET num 10
  2. OK
  3. DECR num
  4. 9
  5. EXISTS count
  6. 0
  7. DECR count
  8. -1

DECRBY key decrement

将key所存储的值减去减量decrement。

如果key不存在,则先被初始化为0,然后再执行操作。如果值包含错误的类型,则会返回一个错误。

返回值:操作后的值。

  1. SET count 10
  2. OK
  3. DECRBY count 20
  4. -10
  5. EXISTS pages
  6. 0
  7. DECRBY pages 1
  8. -1
  9. DECRBY pages -1
  10. 0
  11. DECRBY pages -3
  12. 3

GET key

返回key所关联的字符串的值。如果key不存在,则返回nil。

返回值:key不存在时,返回nil,否则返回key的值。

如果key不是字符串类型,则返回一个错误。

  1. GET db
  2. SET DB redis
  3. OK
  4. get DB
  5. redis
  6. DEL db
  7. 0
  8. EXISTS db
  9. 0
  10. LPUSH db redis mongodb mysql
  11. 3
  12. GET db
  13. ERR Operation against a key holding the wrong kind of value

GETRANGE key start end

返回字符串值的字串。start end指定截取范围(包括start end在内)。负数表示从最后开始计数。

返回值:截取的子串。

  1. SET greeting "Hello,my friend"
  2. OK
  3. GETRANGE greeting 04
  4. Hello
  5. GETRANGE greeting -1-5
  6. GETRANGE greeting -3-1
  7. end
  8. GETRANGE greeting 0-1
  9. Hello,my friend
  10. GETRANGE greeting 010000000
  11. Hello,my friend

GETSET key value

将给定key的值设为value,并返回key的旧值。

当key存在但不是字符串时,返回一个错误。

返回值:返回给定key的旧值。

当key没有旧值,即key不存在时,返回nil。

  1. GETSET db mongodb
  2. GET db
  3. mongodb
  4. GETSET db redis
  5. mongodb

模式:GETSET和INCR组合使用,实现获取一个原子性操作的执行计数器结果,并对结果进行复位。

  1. INCR mycount
  2. 1
  3. INCR mycount
  4. 2
  5. INCR mycount
  6. 3
  7. GETSET mycount 0
  8. 3

INCR key

将key中存储的数字值增一。

如果key不存在,那么key会被初始化0,再执行INCR操作。

如果包含错误的数据类型,则会返回一个错误。

返回值:执行INCR操作后key的值。

  1. SET page_view 20
  2. OK
  3. INCR page_view
  4. 21

模式:计数器

INCRBY key increment

将key所存储的值增加增量increment。

如果key不存在,那么key的值会先被初始化为0,再执行INCRBY操作。

  1. SET rank 50
  2. OK
  3. INCRBY rank 20
  4. 70
  5. GET rank
  6. 70
  7. SET book "REDIS"
  8. OK
  9. INCRBY book 1
  10. ERR value is not an integer or out of range

INCRBYFLOAT key increment

为key中所存储的 值加上浮点数的增量increment。无论加法计算所得的浮点数的实际精度有多长,

INCRBYFLOAT 的计算结果也最多只能表示小数点的后十七位。

返回值:执行之后key的值。

  1. SET mykey 10.50
  2. OK
  3. INCRBYFLOAT mykey 0.1
  4. 10.6
  5. SET mykey 314e-2
  6. OK
  7. INCRBYFLOAT mykey 0.5
  8. 3.64
  9. SET mykey 4
  10. OK
  11. INCRBYFLOAT mykey 0.5
  12. 4.5

MGET key[key...]

返回所所有给定key的值。

如果给定key里面,某个key不存在,则这个key返回特殊值nil。该命令永不失败。

返回值:一个包含所有给定key的值的列表。

  1. SET redis redis.com
  2. OK
  3. SET mongodb mongodb.com
  4. OK
  5. MGET redis mongodb mysql
  6. redis.com
  7. mongodb.com

MSET key value[key value]

同时设置一个或多个key-value对。

如果某个给定key存在,那么覆盖原有值。如果不希望被覆盖,可以使用MSENX命令。

MSET是一个原子操作,所有给定的key都会在同一时间被设置。

返回值:总是返回OK。

  1. MSET date "2012-05" time "11:00 am" weather "SUNNY"
  2. OK
  3. MGET date time weather
  4. 2012-05
  5. 11:00 am
  6. SUNNY
  7. SET google "google.hk"
  8. OK
  9. MSET google "google.com"
  10. OK
  11. GET google
  12. google.com

MSETNX key value[key value ...]

同时设置多个key-value,当且仅当所有给定key都不存在。如果有一个key存在,那么MSETNX操作会拒绝执行所有给定的key。

MSETNX是原子操作,所有字段要么成功,要么失败。

返回值:所有key成功,返回1。失败返回0。

  1. MSETNX rmdbs "MySql" nosql "MongoDB" key-value-store "Redis"
  2. 1
  3. MGET rmdbs nosql
  4. MySql
  5. MongoDB
  6. MSETNX rmdbs "MySql" language "Java"
  7. 0

PSETEX key milliseconds value

已milliseconds毫秒为单位,设置key的生存时间。

返回值:成功返回OK。

  1. PSETEX mykey 10000"HELLO"
  2. OK
  3. PTTL mykey
  4. 7110
  5. GET mykey
  6. HELLO
  7. PTTL mykey
  8. -1
  9. GET mykey

SET key value [EX seconds] [PX milliseconds] [NX] [NX]

将字符串value关联到key。

如果key已经持有其他值,SET操作覆盖旧值。

对于某个原本都有生存时间TTL的键来说,当SET命令成功在执行时,原TTL会被清除。

可选参数:

  • EX seconds:设置键的国企时间为second秒。此参数等同于SETEX key second value。
  • PX millisecond:设置键的过期时间为millisecond毫秒。SET key value PX millisecond 效果等同于 PSETEX key millisecond value。
  • NX:只在key不存在时,才对key执行操作。set key value NX 等同于: SETNX key value。
  • XX:只在键已经存在时,才进行操作。
  1. SET key "value"
  2. OK
  3. GET key
  4. value
  5. SET key "new-value"
  6. OK
  7. get key
  8. new-value
  9. SET key "hello" EX 100860
  10. OK
  11. TTL key
  12. 100856
  13. TTL key
  14. 100852
  15. SET key "moto" PX 123331
  16. OK
  17. TTL key
  18. 121
  19. get key
  20. moto
  21. TTL key
  22. 107
  23. SET key "value" NX
  24. SET key1 "value" NX
  25. OK
  26. SET key "value" XX
  27. OK
  28. SET key2 "value" XX

SETEX key seconds value

将value关联到key,并将key的生存时间设置为seconds秒。

如果key已经存在,SETEX将会覆盖旧值。

返回值:设置成功时返回OK。蛋seconds参数不合法时,返回一个错误。

  1. SETEX user_id 6010086
  2. OK
  3. TTL user_id
  4. 54
  5. get user_id
  6. 10086
  7. get user_id
  8. 10086
  9. TTL user_id
  10. 36

SETNX key value

将key的值设为value,当且仅当key不存在。

若给定的key已经存在,则SETNX不做任何动作。SETNX 是 SET if Not eXists。

返回值:成功1,失败0。

  1. EXISTS job
  2. 0
  3. SETNX job "code-farmer"
  4. 1
  5. SETNX job "programmer"
  6. 0
  7. GET job
  8. code-farmer

SETRANGE key offset value

用value参数overwrite给定key所存储的字符串,从offset开始。

不存在的key当做空白字符串处理。

SETRANGE命令会确保字符串足够长以便将value设置在指定的便宜量上。如果字符串长度比偏移量小,则空白处使用零字节(\x00)填充。

使用的最大偏移量为2^29 - 1。

返回值:修改后的字符串长度。

  1. redis> SET greeting "hello world"
  2. OK
  3. redis> SETRANGE greeting 6"Redis"
  4. (integer)11
  5. redis> GET greeting
  6. "hello Redis"
  7. # 对空字符串/不存在的 key 进行 SETRANGE
  8. redis> EXISTS empty_string
  9. (integer)0
  10. redis> SETRANGE empty_string 5"Redis!"# 对不存在的 key 使用 SETRANGE
  11. (integer)11
  12. redis> GET empty_string # 空白处被"\x00"填充
  13. "\x00\x00\x00\x00\x00Redis!"

STRLEN key

返回字符串的长度。当key不是一个字符串时,返回一个错误。

返回值: 字符串长度。当key不存在时,返回0。

  1. SET mykey "Hello World"
  2. OK
  3. STRLEN mykey
  4. 11
  5. STRLEN nonestr
  6. 0

------------

以上为Redis中对string类型的基本操作命令。

本文主要参考:http://redisdoc.com/

时间: 2024-10-13 11:46:36

Redis-string类型操作命令的相关文章

redis的string类型操作命令

/* *设置值 *可以设置整形或字符串类型 *ex: set string1 lrb123 */ set key value /* *获取值 *可以获取设置过的值 *get string1 *ex:get string1 *return:lrb123 */ get key /* *自增整形 *使值自增 *incr string1 */ incr key /* *减法操作 *decrby string1 decyby_value */ decrby key 2 原文地址:https://www.c

Redis String类型的API使用

package com.daxin.jedis_datastructure; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; /** * Unit test for simple App. */ public class AppTest { Jedis jedis = null; @Before public void before(

redis数据类型一之string的操作命令

1.首先在redis官网文档上截取一段做说明: 如图示:这里说redis string 类型是一种能够连接 redis key 的最简单的值的类型,它也是 Memcached 唯一的一种数据类型,所以对于新手来说最易于使用.string数据类型对于一些用户实例是很有帮助的,像 HTML 标签或者是页面.(原谅我做一些英文翻译,打着学英文的口号看遍好莱坞大片.) 2.string数据类型的相关操作命令: i: set/get/del/append/strlen: 分别为 新增/获取/删除/追加/计

[redis] redis 对string类型数据操作

package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.List; /** * Created by Administrator on

架构师养成记--31.Redis的String类型

Redis一共分为五种基本数据类型:String.Hash.List.Set.ZSet String类型是包含很多张类型的特殊类型,并且是二进制安全的.比如对序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串数值等等. Set和get方法的使用 设置值:set name sgm (多次设置name值,后一次会覆盖前一次) 取值 get name 删除值:del name setnx,nx的意思就是not exists:不覆盖赋值,如上例,如果name存在就不设置了. sete

Redis字符串类型相关操作命令

string是redis最基本的类型,可以包括任何类型数据,如jpg图片或者序列化对象. 单个value1最大上限是1G字节 如果只使用string类型,redis就可以被看做具有持久化特性的memcache set key value [ex 过期时间秒数]|[px 过期时间毫秒数] [nx]|[xx] 设置一个key的值,默认value的类型为stringex,px过期时间,如果同时设置以后面的为准,如set name zhangsan ex 10 px 3000,则以后面的时间为准即3秒n

Redis学习笔记(三)-数据类型之string类型

string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象.从内部实现来看其实string可以看作byte数组,最大上限是1G字节.下面是string类型的定义. struct sdshdr {  long len;  long free;  char buf[]; }; buf是个char数组用于存贮实际的字符串内容.其实char和c#中的byte是等价的,都是一个字节.len是buf数组的长度,fr

使用 redis (基础, key操作, string类型操作)

使用redis set 类型: 没有重复元素 list 链表类型 有重复累型 sort set 类型 没有重复元素 1.1 存储数据 读取数据 // 数据储存在 内存中 set name laowen // OK 表示成功 set age 22    // ok 表示成功 set add beijing // OK 表示成功 get name // "laowen" 表示获取成功 get age // "22" 表示获取成功 get addr // "be

Nosql技术--redis系列--redis的数据类型 及相应的命令--String类型

1:redis的官方网站地址是:http://www.redis.com 在线redis命令运行测试地址:http://try.redis.io/ 2:redis的数据类型有5种:String .Hash .Set.List.SortedSet String 类型 1)String是二进制安全的 (1):set 表示设置key和value eg :> set name lusy ok >get name lusy 注意:redis中同一个name对应的value是一样的 (2)setnx:设置

redis的string类型

1.简单描述 string类型是redis最基本的类型,而且string类型是二进制安全的,就是说redis的string类型可以包含任何数据,比如jpg图片或者序列化的对象.string类型最大可以存储1G字节数据.另外,string类型可以被部分命令(比如inrc)按照int类型处理.如果只使用string类型,那么redis可以被当做是拥有持久化功能的memcached,但是redis的string类型的操作比memcached多很多,下面来看具体的命令. 2.相关命令(基于4.0.1版本