Redis数据类型相关命令及应用

@Redis keys 命令

DEL key 删除key
EXISTS key 检查给定 key 是否存在
EXPIRE  key seconds 为给定 key 设置过期时间
EXPIREAT key timestamp 为给定 key 设置过期时间,接受 unix timestamp
KEYS pattern   查找所有符合给定模式( pattern)的 key,如 KEYS test*
MOVE key db 将当前数据库的key 移动到给定的数据库db
PERSIST key 移除key 的过期时间,key将持久保持
TTL key 以秒为单位,返回给定 key的剩余生存时间
RANDOMKEY 从当前数据库中随机返回一个 key
RENAME key newkey 修改 key的名称,newkey存在时将覆盖旧值
RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey
TYPE key 返回 key 所储存的值的类型




 


 
 
 
 
 
 
 

 

 

 

@Redis 字符串命令

STRLEN key 返回 key 所储存的字符串值的长度  
GET key 获取指定 key 的值  
GETRANGE key start end 返回 key 中字符串值的子字符 redis 127.0.0.1:6379> SET mykey "This is my test key"
OK
redis 127.0.0.1:6379> GETRANGE mykey 0 3
"This"
redis 127.0.0.1:6379> GETRANGE mykey 0 -1
"This is my test key"
GETSET key value 将给定 key 的值设为 value,并返回 key 的旧值(old value), 没有旧值返回 nil  
MGET key1 [key2..] 获取所有给定 key 的值,不存在的key返回nil  
SET key value 设置指定 key 的值  
SETNX key value 只有在 key 不存在时设置值  
SETEX key seconds value 为指定的 key 设置值及其过期时间, 如果 key 已经存在覆盖旧值  
SETRANGE key offset value 用 value 参数覆写给定 key 的值,从偏移量 offset 开始 redis 127.0.0.1:6379> SET key1 "Hello World"
OK
redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
redis 127.0.0.1:6379> GET key1
"Hello Redis"
MSET key value [key value ...] 同时设置一个或多个 key-value 对  
MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在  
INCR key 将 key中储存的数字值加一  
INCRBY key increment 将 key中储存的值加上给定的增量值  
INCRBYFLOAT key increment 将 key中储存的值加上给定的浮点增量值  
DECR key 将 key 中储存的数字值减一  
DECRBY key decrement 将key 中储存的值减去给定的减量值  
APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值的末尾 redis> EXISTS myphone
(integer) 0
redis> APPEND myphone "iPhone"      
(integer) 6       # 字符长度
redis> APPEND myphone " X"    
(integer) 8
redis> GET myphone
"iPhone X"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@Redis hash命令

HDEL key field1 [field2] 删除一个或多个哈希表字段
HLEN key 获取哈希表中字段的数量
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
HKEYS key 获取所有哈希表中的字段
HVALS key 获取哈希表中所有值
HGETALL key 获取在哈希表中指定 key 的所有字段和值
HGET key field 获取存储在哈希表中指定字段的值
HMGET key field1 [field2] 获取所有给定字段的值
HSET key field value 将哈希表 key 中的字段 field 的值设为 value
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值
HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment
HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment

 

 

 

 

 

 

 

 

 


@Redis列表命令

 

LLEN key
获取列表长度

LINDEX key index
通过索引获取列表中的元素
LRANGE key start stop
获取列表指定范围内的元素
LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
LSET key index value
通过索引设置列表元素的值
LTRIM key start stop
对一个列表进行修剪,只保留指定区间内的元素
LREM key count value
移除列表元素
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
LPOP key
移出并获取列表的第一个元素
RPOP key
移除列表的最后一个元素,返回值为移除的元素。
LPUSH key value1 [value2]
将一个或多个值插入到列表头部
RPUSH key value1 [value2]
在列表中添加一个或多个值
LPUSHX key value
将一个值插入到已存在的列表头部
RPUSHX key value
为已存在的列表添加值
RPOPLPUSH source destination
移除列表的最后一个元素,并将该元素添加到另一个列表并返回

BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@Redis集合命令

SCARD key    获取集合的成员数
SMEMBERS key 返回集合中的所有成员
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
SADD key member1 [member2] 向集合添加一个或多个成员
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
SPOP key 移除并返回集合中的一个随机元素
SREM key member1 [member2] 移除集合中一个或多个成员
SDIFF key1 [key2] 返回给定所有集合的差集
SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
SINTER key1 [key2] 返回给定所有集合的交集
SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
SUNION key1 [key2] 返回所有给定集合的并集
SUNIONSTORE destination key1 [key2] 返回所有给定集合的并集存储在 destination 集合中

 

 

 

 

 

 

 

 

 

@Redis有序集合命令

ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key 获取有序集合的成员数
ZCOUNT key min max 计算在有序集合中指定区间(闭区间)分数的成员数
ZSCORE key member 返回有序集中,成员的分数值
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE destination numkeys key [key ...] 计算给定有序集的交集,并将结果集储存到 destination,numkeys 指定 key 的数量
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和
ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储到 destination
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
以 0 表示有序集第一个成员,以 -1 表示最后一个成员
值递减(从大到小)来排列使用 ZREVRANGE 命令
> ZRANGE salary 0 -1 WITHSCORES
1) "jack"
2) 3000.0
3) "tom"
4) 5000.0
> ZRANGE salary 0 -1
1) "jack"
2) "tom"
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
ZRANK key member 返回有序集合中指定成员的索引(按升序排)
ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZRANGEBYSCORE key min max [WITHSCORES] 通过分数返回有序集合指定区间内的成员
https://www.runoob.com/redis/sorted-sets-zrangebyscore.html
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
ZREM key member [member ...] 移除有序集合中的一个或多个成员
ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量(前提可能是分数值相同?或者排好序?)
ZRANGEBYLEX key min max 通过字典区间返回有序集合的成员

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@使用场景

1)字符串
计数器应用

2)列表
取最新N个数据的操作
消息队列
文章列表

3)集合
利用唯一性,可以统计访问网站的所有IP
实时系统,反垃圾系统
共同好友,二度好友
好友推荐的时候,根据tag求交集,大于某个阈值推荐

4)哈希
存储、读取、修改用户属性

5)有序集合
排行榜应用,取TOP N操作
需要精准设定过期时间应用(时间戳作为Score)
带有权重的元素,如游戏的用户得分排行榜   参考 -> 使用Redis实现实时排名 https://www.jianshu.com/p/2cbf358b933b
过期项目处理,按照时间排序 

 

Redis在线命令工具 ->   http://try.redis.io/

参考资料:
菜鸟教程Redis命令 https://www.runoob.com/redis/redis-sorted-sets.html
redis有序集合性能 列表、集合、有序集合 https://www.cnblogs.com/makai/p/11360938.html
Redis(二):Redis的九大应用场景 https://www.cnblogs.com/shamo89/p/6776300.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章