Redis的5种数据类型操作命令汇总
一、字符串类型string
Redis String可以存储:字符串、整数、浮点数,对字符串或字符串中一部分执行操作,对整数或浮点数执行自增(increment)或自减(decrement)操作。
Redis String字符串是由一个字节组成的序列,内部为字符串分配的空间一般高于实际字符串长度,当字符串长度小于1M时,扩容是加倍字符串现有空间,如果超过1M则扩容时只会多扩容1M,字符串最大长度为512M。
string命令概览
命令 | 描述说明 |
---|---|
SET key value | 设置指定键的值 |
GET key | 获取指定键的值 |
GETRANGE key start end | 获取存储在键上的字符串的子字符串 |
GETSET key value | 设置键的字符串值并返回其旧值 |
GETBIT key offset | 返回在键处存储的字符串值中偏移处的位值 |
MGET key1 [key2…] | 获取所有给定键的值 |
SETBIT key offset value | 存储在键上的字符串值中设置或清除偏移处的位 |
SETEX key seconds value | 使用键和到期时间来设置值 |
SETNX key value | 设置键的值,仅当键不存在时 |
SETRANGE key offset value | 在指定偏移处开始的键处覆盖字符串的一部分 |
STRLEN key | 获取存储在键中的值的长度 |
MSET key value [key value …] | 为多个键分别设置它们的值 |
MSETNX key value [key value …] | 为多个键分别设置它们的值,仅当键不存在时 |
PSETEX key milliseconds value | 设置键的值和到期时间(以毫秒为单位) |
INCR key | 将键的整数值增加1 |
INCRBY key increment | 将键的整数值按给定的数值增加 |
INCRBYFLOAT key increment | 将键的浮点值按给定的数值增加 |
DECR key | 将键的整数值减1 |
DECRBY key decrement | 按给定数值减少键的整数值 |
APPEND key value | 将指定值附加到键 |
string命令操作
1.存储: set key value
Redis:0>set key value
"OK"
Redis:0>keys *
1) "key"
Redis:0>get key
"value"
2.获取: get key
Redis:0>get key
"value"
3.删除: del key 返回值1:操作成功 返回值0:操作失败
Redis:0>del key
"1"
4. 判断key是否存在 exists key
Redis:0>set key value
"OK"
Redis:0>exists mykey
"0"
Redis:0>exists key
"1"
5.判断key的剩余生存时间(单位秒) ttl key
返回值-1 key没有过期的生存时间
Redis:0>ttl key
"-1"
6.设置key的生存时间(秒) expire key 10
Redis:0>expire key 100
"1"
Redis:0>ttl key
"98"
Redis:0>ttl key
"95"
7.设置key的生存时间(毫秒) pexpire key 10000
Redis:0>pexpire key 10000
"1"
Redis:0>ttl key
"7"
Redis:0>ttl key
"5"
8.判断key的类型 type key
Redis:0>set key value
"OK"
Redis:0>type key
"string"
9.key重命名(存在key直接覆盖) rename oldKey newKey
Redis:0>rename key newKey
"OK"
Redis:0>get key
null
Redis:0>get newKey
"value"
10.key重命名 renamenx(带有判断逻辑不会直接覆盖) renamenx oldKey newKey
Redis:0>set key1 value1
"OK"
Redis:0>set key2 value2
"OK"
Redis:0>renamenx key1 key2
"0"
Redis:0>renamenx key1 key3
"1"
Redis:0>get key1
null
Redis:0>get key3
"value1"
11.获取key的长度 strlen key
Redis:0>set key value
"OK"
Redis:0>strlen key
"5"
12.获取key值的范围 getrange key [n,m]
Redis:0>get key
"value"
Redis:0>strlen key
"5"
Redis:0>getrange key 0 3
"valu"
13.设置key的新值返回旧值 getset key newValue
Redis:0>getset key newValue
"value"
Redis:0>get key
"newValue
14.设置key值(带判断,不存在才生效) setnx key newValue
Redis:0>set key1 value
"OK"
Redis:0>get key1
"value"
Redis:0>setnx key1 value
"0"
Redis:0>setnx key2 value
"1"
15.mset 同时设置一个或多个 mset key value key value key value
Redis:0>mset key1 value1 key2 value2
"OK"
Redis:0>keys *
1) "key1"
2) "key2"
16.msetnx 用于所有给定 key 都不存在时
msetnx key value key value
键存在,操作将失败
Redis:0>mset key1 value1 key2 value2
"OK"
Redis:0>msetnx key1 value1 key2 value2
"0"
17.mget 同时获取一个或多个key值
Redis:0>mget key1 key2
1) "value1"
2) "value2"
18.使key加1 incr key
Redis:0>set key 0
"OK"
Redis:0>incr key
"1"
Redis:0>incr key
"2"
19.指定步长增长 incrby key number
Redis:0>set key 0
"OK"
Redis:0>incrby key 10
"10"
Redis:0>incrby key 10
"20"
20.使key减1 decr key
Redis:0>set key 10
"OK"
Redis:0>decr key
"9"
Redis:0>decr key
"8"
Redis:0>decr key
"7
21.指定步长递减 decrby key number
Redis:0>set key 20
"OK"
Redis:0>decrby key 5
"15"
Redis:0>decrby key 5
"10"
Redis:0>decrby key 5
"5"
22.追加字符串到key值末尾 append key value
Redis:0>set key value
"OK"
Redis:0>append key 123
"8"
Redis:0>get key
"value123
二、哈希类型hash
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
hash命令概览
命令 | 描述说明 |
---|---|
HDEL key field2 [field2] | 删除一个或多个哈希表字段 |
HEXISTS key field | 查看哈希表 key 中,指定的字段是否存在。 |
HGET key field | 获取存储在哈希表中指定字段的值。 |
HGETALL key | 获取在哈希表中指定 key 的所有字段和值 |
HINCRBY key field increment | 为哈希表 key 中的指定字段的整数值加上增量 increment 。 |
HINCRBYFLOAT key field increment | 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 |
HKEYS key | 获取所有哈希表中的字段 |
HLEN key | 获取哈希表中字段的数量 |
HMGET key field1 [field2] | 获取所有给定字段的值 |
HMSET key field1 value1 [field2 value2 ] | 同时将多个 field-value (域-值)对设置到哈希表 key 中。 |
HSET key field value | 将哈希表 key 中的字段 field 的值设为 value 。 |
HSETNX key field value | 只有在字段 field 不存在时,设置哈希表字段的值。 |
HVALS key | 获取哈希表中所有值 |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的键值对。 |
hash命令操作
1. 存储: hset key field value
Redis:0>hset hash field value
"1"
Redis:0>keys *
1) "hash"
2.获取指定字段的值: hget key field
Redis:0>hset hash field value
"1"
Redis:0>keys *
1) "hash"
Redis:0>hget hash field
"value"
3.批量存储key的字段和值 hmset map key1 value1 key2 value2
Redis:0>hmset hash field1 value1 field2 value2
"OK"
Redis:0>hkeys hash
1) "field1"
2) "field2"
4.存储(带判断) hsetnx map field value
Redis:0>hset hash field value
"1"
Redis:0>hsetnx hash field value
"0"
Redis:0>hsetnx hash field1 value
"1"
Redis:0>hkeys hash
1) "field"
2) "field1"
5.获取指定 key 的所有字段和值 hgetall key
Redis:0>hset hash field1 value1
"1"
Redis:0>hset hash field2 value2
"1"
Redis:0>hgetall hash
1) "field1"
2) "value1"
3) "field2"
4) "value2"
6.获取key的所有字段 hkeys key
Redis:0>hset hash field1 value1
"1"
Redis:0>hset hash field2 value2
"1"
Redis:0>hkeys hash
1) "field1"
2) "field2"
7.获取key所有字段的值 hvals key
Redis:0>hset hash field1 value1
"1"
Redis:0>hset hash field2 value2
"1"
Redis:0>hvals hash
1) "value1"
2) "value2"
8.获取key的字段个数 hlen key
Redis:0>hlen hash
"2"
9.批量获取key指定字段的值 hmget key field field...
Redis:0>hset hash field1 value1
"1"
Redis:0>hset hash field2 value2
"1"
Redis:0>hmget hash field1 field2
1) "value1"
2) "value2
10.删除一个或多个字段: hdel key field1 field2...
Redis:0>hset hash field1 value1
"1"
Redis:0>hset hash field2 value2
"1"
Redis:0>hdel hash field1 field2
"2"
Redis:0>hkeys hash
11.查看key类型 type key
Redis:0>hset hash field value
"1"
Redis:0>type hash
"hash"
12.查看指定的字段是否存在 hexists key field
Redis:0>hset hash field value
"1"
Redis:0>hexists hash field
"1"
Redis:0>hexists hash field1
"0"
三、列表类型list
Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
list命令概览
命令 | 描述说明 |
---|---|
BLPOP key1 [key2 ] timeout | 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
BRPOP key1 [key2 ] timeout | 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 |
LINDEX key index | 通过索引获取列表中的元素 |
LINSERT key BEFORE | AFTER pivot value |
LLEN key | 获取列表长度 |
LPOP key | 移出并获取列表的第一个元素 |
LPUSH key value1 [value2] | 将一个或多个值插入到列表头部 |
LPUSHX key value | 将一个值插入到已存在的列表头部 |
LRANGE key start stop | 获取列表指定范围内的元素 |
LREM key count value | 移除列表元素 |
LSET key index value | 通过索引设置列表元素的值 |
LTRIM key start stop | 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 |
RPOP key | 移除并获取列表最后一个元素 |
RPOPLPUSH source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
RPUSH key value1 [value2] | 在列表中添加一个或多个值 |
RPUSHX key value | 为已存在的列表添加值 |
list命令操作
1. lpush key value: 将元素加入列表左表
Redis:0>lpush list 1 2 3 4 5
"5"
Redis:0>keys *
1) "list"
Redis:0>lrange list 0 2
1) "5"
2) "4"
3) "3
2. rpush key value:将元素加入列表右边
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>lrange list 0 2
1) "1"
2) "2"
3) "3"
3. lrange key start end :范围获取
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>lrange list 0 2
1) "1"
2) "2"
3) "3"
4.llen key :获取长度
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>llen list
"5"
5.lset key index value : 设置某个索引位置的值
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>lrange list 0 2
1) "1"
2) "2"
3) "3"
Redis:0>lset list 0 9
"OK"
Redis:0>lrange list 0 2
1) "9"
2) "2"
3) "3"
6.lindex key index : 获取某个索引位置的值
Redis:0>lrange list 0 2
1) "9"
2) "2"
3) "3"
Redis:0>lindex list 0
"9"
Redis:0>lindex list 1
"2"
7.lpop key :删除列表最左边的元素,并将元素返回
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>lrange list 1 2
1) "1"
2) "2"
3) "3"
Redis:0>lpop list
"1"
8.rpop key : 删除列表最右边的元素,并将元素返回
Redis:0>rpush list 1 2 3 4 5
"5"
Redis:0>rpop list
"5"
Redis:0>rpop list
"4"
四、无序集合类型set
Redis的Set是string类型的无序集合。集合成员是唯一的,意味着集合中不能出现重复的数据。
Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
set命令概览
命令 | 描述说明 |
---|---|
SADD key member1 [member2] | 向集合添加一个或多个成员 |
SCARD key | 获取集合的成员数 |
SDIFF key1 [key2] | 返回给定所有集合的差集 |
SDIFFSTORE destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 |
SINTER key1 [key2] | 返回给定所有集合的交集 |
SINTERSTORE destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中 |
SISMEMBER key member | 判断 member 元素是否是集合 key 的成员 |
SMEMBERS key | 返回集合中的所有成员 |
SMOVE source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
SPOP key | 移除并返回集合中的一个随机元素 |
SRANDMEMBER key [count] | 返回集合中一个或多个随机数 |
SREM key member1 [member2] | 移除集合中一个或多个成员 |
SUNION key1 [key2] | 返回所有给定集合的并集 |
SUNIONSTORE destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
set命令操作
不允许重复元素
1. 存储:sadd key value
Redis:0>sadd set value
"1"
Redis:0>keys *
1) "set"
2.返回set集合数量: scard key
Redis:0>sadd set a b c
"3"
Redis:0>scard set
"3"
3.返回差集: sdiff key1 key2
Redis:0>sadd set1 a b c d e
"5"
Redis:0>sadd set2 c d e f g
"5"
Redis:0>sdiff set1 set2
1) "a"
2) "b"
Redis:0>sdiff set2 set1
1) "g"
2) "f"
4.返回交集 : sinter key1 key2
Redis:0>sadd set1 a b c d e
"5"
Redis:0>sadd set2 c d e f g
"5"
Redis:0>sinter set1 set2
1) "c"
2) "d"
3) "e"
5.返回并集: sunion key1 key2
Redis:0>sadd set1 a b c d e
"5"
Redis:0>sadd set2 c d e f g
"5"
Redis:0>sunion set1 set2
1) "c"
2) "d"
3) "a"
4) "g"
5) "f"
6) "b"
7) "e"
6.返回集合中一个或多个随机数: srandmember set 3
Redis:0>sadd set 1 2 3 4 5 6
"6"
Redis:0>srandmember set 3
1) "2"
2) "1"
3) "3"
Redis:0>srandmember set 3
1) "6"
2) "5"
3) "4"
7.判断某个元素是否属于集合
Redis:0>sadd set 1 2 3 4 5 6
"6"
Redis:0>sismember set 1
"1"
Redis:0>sismember set 10
"0"
8.返回集合中所有元素: smembers key
Redis:0>smembers set
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
9.移除一个或多个元素: srem key value1 value2
Redis:0>sadd set 1 2 3 4 5 6
"6"
Redis:0>srem set 1 2 3
"3"
Redis:0>smembers set
1) "4"
2) "5"
3) "6"
10.移除并返回集合中的元素: spop key
Redis:0>sadd set 1 2 3 4 5 6
"6"
Redis:0>spop set
"5"
Redis:0>spop set
"1"
Redis:0>spop set
"3"
Redis:0>scard set
"3"
Redis:0>smembers set
1) "2"
2) "4"
3) "6
五、有序集合类型sortedset
Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sortedset命令概览
命令 | 描述说明 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
ZCARD key | 获取有序集合的成员数 |
ZCOUNT key min max | 计算在有序集合中指定区间分数的成员数 |
ZINCRBY key increment member | 有序集合中对指定成员的分数加上增量 increment |
ZINTERSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 |
ZLEXCOUNT key min max | 在有序集合中计算指定字典区间内成员数量 |
ZRANGE key start stop [WITHSCORES] | 通过索引区间返回有序集合成指定区间内的成员 |
ZRANGEBYLEX key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
ZRANK key member | 返回有序集合中指定成员的索引 |
ZREM key member [member …] | 移除有序集合中的一个或多个成员 |
ZREMRANGEBYLEX key min max | 移除有序集合中给定的字典区间的所有成员 |
ZREMRANGEBYRANK key start stop | 移除有序集合中给定的排名区间的所有成员 |
ZREMRANGEBYSCORE key min max | 移除有序集合中给定的分数区间的所有成员 |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到底 |
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
ZREVRANK key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
ZSCORE key member | 返回有序集中,成员的分数值 |
ZUNIONSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) |
sortedset命令操作
1. 存储:zadd key score value
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>keys *
1) "sortedset"
2.查看集合中元素个数 zcard key
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>zcard sortedset
"2"
3.查看集合中元素的分数 zscore key value
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>zscore sortedset a
"10"
Redis:0>zscore sortedset ab
null
Redis:0>zscore sortedset b
"20"
4.返回集合中满足分数区间的元素个数: zcount key [score1,score2]
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>zcount sortedset 8 15
"1"
5.查看集合中元素的索引: zrank key value
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>zrank sortedset a
"0"
Redis:0>zrank sortedset b
"1"
6.提高集合某个元素的分数 : zincrby key score value
Redis:0>zadd sortedset 10 a 20 b
"2"
Redis:0>zscore sortedset a
"10"
Redis:0>zrank sortedset a
"0"
Redis:0>zincrby sortedset 50 a
"60"
Redis:0>zscore sortedset a
"60"
Redis:0>zrank sortedset a
"1"
7.返回指定范围的集合元素: zrange key [start,end]
Redis:0>zadd sortedset 10 a 20 b 30 c 40 d
"2"
Redis:0>zrange sortedset 0 1
1) "a"
2) "b"
8.返回指定范围的集合元素(带分数): zrange key [start,end] withscores
Redis:0>zadd sortedset 10 a 20 b 30 c 40 d
"4"
Redis:0>zrange sortedset 0 1 withscores
1) "a"
2) "10"
3) "b"
4) "20"
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137162.html