官方命令手册:https://oss.redislabs.com/redisearch/Commands.html
中文手册:https://www.php.cn/redis/redis-commands.html
命令参考:http://doc.redisfans.com/index.html
命令手册1:https://www.redis.net.cn/order/
命令手册2:https://www.redis.com.cn/commands/
| 角色 |
redis.conf |
权限说明 |
| 超户 |
requirepass |
所有功能 |
| 普通 |
requireuserpass |
不能进程管理类命令,如shutdown |
| 只读 |
requirereaduserpass |
在普通用户基础上,进一步限制只能进行读操作,没有script命令权限 |
普通用户不能进行的操作有:
| 命令 |
解释 |
| INFO commandstats |
查看所有命令统计 |
| CONFIG RESETSTAT |
重置统计 |
| save |
SAVE命令执行一个同步保存操作,将当前Redis实列的所有数据快照(snapshot)以RDB文件的形式保存到硬盘 |
| bgsave |
在后台异步(Asynchronously)保存当前数据库的数据到磁盘 |
| bgrrwriteaof |
执行一个AOF文件重写操作,重写会创建一个当前AOF文件的体积优化版本,即使BGREWRITEAOF执行失败,也不会有任何数据丢失,因为旧的AOF文件在BGREWRITEAOF成功之前不会被修改 |
| shutdown |
停止所有客户端,如果有至少一个保存点在等待,执行SAVE命令,如果AOF选项被打开,更新AOF文件,关闭Redis服务器(server) |
| sync |
用户复制功能(replication)的内部命令 |
| psync |
用户复制功能(replication)的内部命令 |
| replconf |
暂无用处 |
| monitor |
实时打印出Redis服务器收到的命令,调试专用 |
| slaveof |
SLAVEOF命令用户在Redis运行时动态地修改复制(replication)功能的行为 |
| debug |
调试命令 |
| config |
配置参数 |
| restore |
反序列化给定的序列化值,并将它和给定的KEY关联 |
| migrate |
将key原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功,KEY保证会出现在目标实例上,而当前实例上的KEY会被删除 |
| dump |
序列化给定KEY,并返回被序列化的值,使用restore命令可以将这个值反序列化为Redis键 |
| 命令 |
解释 |
| 查看锁定IP |
config get lockedips |
| 解锁单个IP |
config set unlockips 10.67.147.111 |
| 解锁所有IP |
config set unlockips “all” |
string类型
字符串常见操作
| 命令 |
解释 |
| set key value |
存入键值对 |
| mset key value [key value…] |
批量存储字符串键值对 |
| setnx key value |
存入一个不存在的字符串键值对 |
| get key |
获取一个字符串 |
| mget key [key…] |
批量获取字符串键值 |
| del key [key…] |
删除一个键 |
| expire key seconds |
设置一个键的过期时间(秒) |
原子加减
| 命令 |
解释 |
| incr key |
将key中存储的数字值加一 |
| decr key |
将key中存储的数字值减一 |
| incr by key increment |
将key中所存储的值加上increment |
| decr by key decrement |
将key所存储的值减去decrement |
string应用场景
计数器
文章计数器 阅读量 incr article:num
分布式锁
| 命令 |
解释 |
| setnx product true |
返回1代表获取锁成功 |
| setnx product true |
返回0代表获取锁失败 |
| del product |
执行完业务释放锁 |
hash类型
hash常用操作
| 命令 |
解释 |
| hset key field value |
存储一个哈希key的键值 |
| hsetnx key field value |
存储一个不存在的哈希表key的键值 |
| hmseet key field value[field value…] |
在一个哈希表key中存储多个键值对 |
| hget key field |
获取哈希表key对应的field的值 |
| hmget key field[field…] |
批量获取哈希表key中多个field的值 |
| hdel key field [field…] |
删除哈希表key中的field的键值 |
| hlen key |
返回哈希表key中的field的数量 |
| hgetall key |
返回哈希表key中所有的键值 |
| hincrby key field increment |
为哈希表key中field键的值加上增量increment |
hash应用场景
对象缓存
hmset user userid1:name value userid1:age 14
购物车
hmset user product1:name value prodeuct1:num value
hash优缺点
- 优点
同类数据归类整合存储,方便数据管理
相比string操作消耗内存与cpu更小
相比string存储更节省空间
- 缺点
过期功能不能使用在field上,只能使用在key上
Redis集群架构下不适合大规模使用
list类型
list常用操作
| 命令 |
解释 |
| lpush key value[value…] |
将一个或多个值value插入到key列表的表头(最左边) |
| rpush key value[value…] |
将一个或多个value插入到key列表的表尾(最右边) |
| lpop key |
移除并返回key列表的头元素 |
| rpop key |
移除并返回key列表的尾元素 |
| lrange key start stop |
返回列表key中指定区间内的元素,区间以偏移量start和stop指定 |
| blpop key [key…] timeout |
从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待 |
| brpop key [key…] timeout |
从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待 |
list应用场景
栈(stack)
lpush + lpop —>FILO
队列(queue)
lpush + rpop
阻塞队列(Blocking MQ)
lpush + brpop
微博微信消息流
使用lpush放入用户ID消息,然后使用lrange 来获取消息
set类型
set常用操作
| 命令 |
解释 |
| sadd key member [member…] |
往集合key中存入元素,元素存在则忽略,若key不存在则创建 |
| srem key member[member…] |
从集合key中删除元素 |
| smembers key |
获取集合key中的所有元素 |
| scardkey |
获取集合key中的元素的个数 |
| sismemver key member |
判断member元素是否存在于集合key中 |
| srandmember key [count] |
从集合key中选出count个元素,元素不从key中删除 |
| spop key [count]//从集合key中选出count个元素,元素从key中删除 |
|
set运算操作
| 命令 |
解释 |
| sinter key [key…] |
交集运算 |
| sinterstore destination key [key…] |
交集结果存入新集合destination中 |
| sunion key [key…] |
并集运算 |
| sunionstore destination key [key…] |
并集结果存入新集合destination中 |
| sdiff key [key…] |
差集运算 |
| sdiffstore destination key [key…] |
差集结果存入新集合destination中 |
set使用场景
微信抽奖小程序
点击参与抽奖加入集合 sadd key {userID}
查看参与抽奖所有用户 smembers key
抽取count名中奖者 srandmember key [count]/spop key [count]
微信微博点赞、收藏、标签
点赞 sadd user ID
取消点赞 srem user ID
检查用户是否点过赞 sismember user ID
获取用户点赞列表 smembers user
获取点赞用户数 scard user
关注模型 (使用集合)
共同关注的人 ------ 交集
可能认识的人 ------- 差集
其他应用场景:
https://bbs.huaweicloud.com/forum/thread-10558-1-1.html