redis操作命令锦集
前面给大家介绍了redis的7种部署方案,相关链接如下:
https://blog.csdn.net/myself_ning/article/details/125628676?spm=1001.2014.3001.5501
但是,仅仅只会部署是远远不够滴,部署只是学习的第一步,重点还要放在其应用。 本节介绍redis的基础命令用法。
redis中五种数据类型
-
- 字符串 String ----重点
- 特点: 存储所有的字符和字符串
- 应用场景: 做缓存使用
-
- 哈希 hash
- 特点: 相当于java中hashMap集合
- 应用场景: 可以存储javaBean对象, 此种使用场景不多,可被String替代
-
- list集合
- 特点: 相当于java中linkList, 是一个链表的结构
- 应用场景: 做任务队列,
- 在java中客户端提供了线程安全获取集合数据的方式
-
- set 集合
- 特点: 唯一, 无序
- 应用场景: 集合运算
- 例如去重复的操作
-
- 有序set集合: sorted set
- 特点:唯一, 有序
- 应用场景: 一般用来做排行榜
redis中String类型相关命令
- 赋值: set key value
- 设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”
- 取值: get key
- 获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)
- 删除: del key
- 删除指定的key
- 数值增减:
- 增减值: incr key
- 将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。
- 减少值: decr key
- 将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息
- 增加固定的值: incrby key increment
- 将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息
- 减少固定的值: decrby key decrement
- 将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息
- 增减值: incr key
- 拼接value值: append key value
- 拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key|value
- 为key中内容设置有效时长:
- 为新创建的key设置时长
- setex key seconds value
- 为已有的key设置有效时长
- expire key seconds
- 为新创建的key设置时长
- 判断key是否存在: exists key
- 返回1 表示存在, 返回0 表示不存在
- 获取key还剩余有效时长: ttl key
- 特殊: 返回-1 表示永久有效 返回-2 表示不存在
redis中hash类型的相关命令
- 存值: hset key field value
- key为一个字符串, value类似于map,同样有一个field和value
- 取值:
- 获取指定key的field的值: hget key field
- 获取指定key的多个field值: hmget key fields
- 获取指定key中的所有的field与value的值: hgetall key
- 获取指定key中map的所有的field: hkeys key
- 获取指定key中map的所有的value: hvals key
- 删除:
- hdel key field [field … ] :可以删除一个或多个字段,返回值是被删除的字段个数
- del key :删除整个内容
- 增加数字:
- hincrby key field number:为某个key的某个属性增加值
- 判断某个key中的filed是否存在: hexists key field
- 返回 0表示没有, 返回1 表示有
- 获取key中所包含的field的数量: hlen key
redis中list集合类型的相关命令
redis的中的list集合类似于java中的linkedlist集合,此集合也是队列的一种, 支持向两端操作
- 添加:
- 从左侧添加: lpush key values[value1 value2…]
- 在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
- 从右侧添加: rpush key values[value1、value2…]
- 在该list的尾部添加元素
- 从左侧添加: lpush key values[value1 value2…]
- 查看列表 : lrange key start end
- 获取链表中从start到end的元素的值,start、end从0开始计数;end可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…
- 删除(弹出):
- 从左侧弹出:lpop key
- 返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素
- 从右侧弹出: rpop key
- 从尾部弹出元素
- 从左侧弹出:lpop key
- 获取列表中元素的个数: llen key
- 返回指定的key关联的链表中的元素的数量
- 向指定的key插入数据, 仅在key存在时插入, 不存在不插入
- 从左侧:lpushx key value
- 从右侧: rpushx key value
- lrem key count value:
- 删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素
- lset key index value:
- 设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛异常。
- linsert key before|after pivot value
- 在pivot元素前或者后插入value这个元素。
- rpoplpush resource destination
- 将链表中的尾部元素弹出并添加到头部。[循环操作]
redis中的set集合的相关命令操作
- 添加: sadd key values[value1、value2…]
- 向set中添加数据,如果该key的值已有则不会重复添加
- 删除: srem key members[member1、member2…]
- 删除set中指定的成员
- 获取所有的元素: smembers key
- 获取set中所有的成员
- 判断元素是否存在: sismember key member
- 判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在。(无论集合中有多少元素都可以极速的返回结果)
- 集合的差集运算: sdiff key1 key2…
- 返回key1与key2中相差的成员,而且与key的顺序有关。那个在前, 返回那个key对应的差集
- 集合的交集运算:sinter key1 key2 key3…
- 返回交集, 两个key都有的
- 集合的并集运算:sunion key1 key2 key3…
- 返回并集
- 获取set中成员的数量:
- scard key
- 随机返回set中的一个成员:
- srandmember key
- 将key1、key2相差的成员存储在destination上:
- sdiffstore destination key1 key2…
- 将返回的交集存储在destination上:
- sinterstore destination key[key…]
- 将返回的并集存储在destination上:
- sunionstore destination key[key…]
redis中的sortedset集合的相关操作:
-
添加数据: zadd key score member
- 将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素
-
获得元素:
- zscore key member: 返回指定元素的值
- zcard key: 获取集合中的成员数量
-
删除元素:zrem key member[member…]
- 移除集合中指定的成员,可以指定多个成员。
-
zrank key member:
- 返回成员在集合中的排名。(从小到大)
-
zrevrank key member
- 返回成员在集合中的排名。(从大到小)
-
zincrby key increment member:
- 设置指定成员的增加的分数。返回值是更改后的分数 …
-
范围查询:
- zrange key start end [withscores]: 获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数
- zrevrange key start stop [withscores]: 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
-
zremrangebyrank key start stop: 按照排名范围删除元素
-
zremrangebyscore key min max: 按照分数范围删除元素
-
zrangebyscore key min max [withscores][limit offset count]:
- 返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员a
-
zcount key min max:
- 获取分数在[min,max]之间的成员
总结
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
命令 | 描述 |
---|---|
set key value | 设置指定key的值 |
get key | 获取指定key的值 |
getrange key start end | 返回字符串值的子字符串(substring) |
getset key value | 将给定key的值设为value,并返回key的旧值 |
getbit key offset | 对 key 所储存的字符串值,获取指定偏移量上的位(bit) |
mget key1 [key2…] | 获取一个或多个给定key的值 |
strlen key | 返回key所存储的字符串的长度 |
mset key value [key value] | 同时设置一个或多个key-value值 |
incr key | 将key存储的值+1 |
incrby key increment | 将key存储的值+increment |
incrbyfloat key increment | 将key存储的值+increment(浮点数) |
decrby key increment | 将key存储的值-increment |
decr key | 将key存储的值-1 |
append key value | 在原有key的值后面追加value |
List(列表)
命令 | 描述 |
---|---|
lindex key index | 通过索引获取列表中的元素 |
linsert key before/after value | 在列表元素的前或者后插入元素 |
llen key | 获取列表长度 |
lpop key | 移除并获取列表的第一个元素 |
lpush key value [value2] | 将一个或多个元素插入列表头部 |
lpushx key value | 将一个值插入到已存在的列表头部 |
lrange key start stop | 获取列表指定范围内的元素 |
lrem key count value | 移除列表元素 |
lset key index value | 通过索引设置列表元素的值 |
ltrim key start stop | 对列表进行去空,保留指定范围内的元素 |
rpop key | 移除列表中的最后一个元素,返回该元素 |
rpoplpush source destination | 移除列表中的最后一个元素,并将该元素添加到另一个列表中 |
rpush key value [key2 value2] | 在列表中添加一个或多个值 |
rpush key value | 为已存在的列表添加值 |
Hash(哈希)
命令 | 描述 |
---|---|
hdel key field [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 field [field2] | 获取所有给定字段的值 |
hset key field value [field2 value2] | 同时将多个field-value值设置到哈希表中 |
hset key filed value | 将哈希表key中的字段field的值设为value |
hsetnx key field value | 只有字段field不存在时,设置哈希表字段的值 |
hvals key | 获取哈希表中所有值 |
hscan key cursor [match pattern] [COUNT count] | 迭代哈希表中的键值对 |
Set(集合)
命令 | 描述 |
---|---|
sadd key member [member] | 向集合中添加一个或多个成员 |
scard key | 获取集合中的成员数 |
sdiff key1 [key2] | 返回第一个集合和其他集合之间的差异 |
sdiffstore destination key [key2] | 返回给定所有集合的差集并存储在destination中 |
sinter key [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 member [member2] | 移除集合中的一个或多个成员 |
sunion key member [member2] | 返回所有与给定集合的并集 |
sunionstore destination key [key2] | 返回给定集合的并集并存储在destination集合中 |
sscan cursor [match pattern] [COUNT count] | 迭代集合中的元素 |