「这是我参与11月更文挑战的第N天,活动详情查看:2021最后一次更文挑战」
Redis 官网:redis.io/
Redis 在线测试:try.redis.io/
Redis 命令参考:doc.redisfans.com/
Redis命令
下载后解压到本地磁盘中,使用cmd命令进入文件夹中运行
redis-server.exe redis.windows.conf
另开一个窗口运行(上面窗口不要关闭)
redis-cli.exe -h 127.0.0.1 -p 6379
全局命令
info //查看redis服务基本信息
select 1(db) //切换存储库
del key/name //删除key
flushall //删除所有数据库的所有key
flushdb //删除当前数据库的所有key
bgrewriteaof //异步执行一个 AOF(AppendOnly File) 文件重写操作
save //同步保存数据到硬盘
bgsave //在后台异步保存当前数据库的数据到磁盘
lastsave //最近一次 Redis 成功将数据保存到磁盘上的时间
shutdown //安全退出,如果持久化被打开,先保存数据在退出。还可以加save/nosave修饰符,save强制保存,即使没有设置,nosave强制不保存,即使有设置
client kill ip:port
client list //获取连接到服务器的客户端连接列表
client getname //获取连接的名称
client setname //设置当前连接的名称
client pause timeout(以毫秒计) //在指定时间内终止运行来自客户端的命令
cluter slots //获取集群节点的映射数组
command //获取 Redis 命令详情数组
command info lpush //获取给定命令的描述
time //返回当前服务器时间
config get parameter //获取 redis 服务的配置参数
config set parameter newConf //修改 redis 配置参数
config revrite //对启动Redis服务器时所指定的 redis.conf 配置文件进行改写(刷新上面修改的配置)
config get requirepass //获取redis登录密码
config set requirepass ‘XX //设置redis登录密码
obsize //返回当前数据库的 key 的数量
debug object key //获取 key 的调试信息
debug segfault //让 Redis 服务崩溃
monitor //实时打印出 Redis 服务器接收到的命令,调试用
role //返回主从实例所属的角色
slowlog get/len/reset //管理 redis 的慢日志。ge查看慢日志,可以指定看多少条,len有多少条慢日志,reset清空慢日志
slaveof host port //将当前服务器转变为指定服务器的从属服务器(slave server)
sync //同步主从服务器
键(key)操作:
del key/name //删除key
dump key //输出序列化给定key的值
restore key 0(到期时间) ‘\x00\x15value\x06\x00E\xa0Z\x82\xd8r\xc1\xde’ //将反序列化之后的值存入key中
exists key //检查给定key值是否存在,存在返回1,不存在返回0
expire key 10(seconds) //设置key的过期时间,以秒计
expireat key 1636424400(timestamp) //设置key的过期时间的时间戳
pexpire key 10000(milliseconds) //设置key的过期时间,以毫秒计
pexpireat key 1636424400000(milliseconds-timestamp) //设置key的过期时间的时间戳,以毫秒计
ttl key //以秒为单位返回 key 的剩余的过期时间
pttl key //以毫秒为单位返回 key 的剩余的过期时间
presist key //取消key到期时间,让key永久有效
keys *(pattern) //可以通过正则的方式匹配key
move key 2(db) //将key移动到指定db
randomkey //从当前数据库随机返回一个key
rename key newKey //修改key名称
renamenx key newKey //仅当 newkey 不存在时,将 key 改名为 newkey
scan 0(游标开始位置) match *(匹配的key) count 10(迭代数量,非符合条件的key值数量) //迭代数据库中的键
type key //返回key值的类型
sort key //返回或保存给定列表、集合、有序集合 key 中经过排序的元素
migrate 127.0.0.1(目标主机) 1234(目标主机的端口) key(要发送的key) 0(目标数据库) 10(超时时间) //将key原子性地从当前实例传送到目标实例的指定数据库上,成功后当前数据库中key会被删除
object refcount key //返回给定 key 引用所储存的值的次数
object encoding key //返回给定 key 所储存的值所使用的内部表示
object refcount key //返回给定 key 自储存以来的空转时间,单位秒
字符串(string)操作:
//一个key对应一个value。最大能存储 512MB
set key value //设置key对应value
setnx key value //只有在key不存在时设置key的值为value
mset key1 value1 key2 value2 //同时设置一个或多个key-value,key如已存在则覆盖值
msetnx key1 value1 key2 value2 //同时设置一个或多个key-value,key不可以已存在
get key //根据key获取value
mget key1 key2 //获取一个或者多个key的值
getset key newValue //将给定 key 的值设为newValue,并返回旧值
getrange key 0(start) 10(end) //截取字符串
setex key 2(seconds) value //将值value关联到key,并将key的过期时间设为2s
psetex key 2000(milliseconds) value //将值value关联到key,并将key的过期时间设为2000ms
setrang key 2 replaceValue //在给定key的值偏移量为2处替换值为replaceValue,replaceValue有几位就替换几位
append key value //将value值追加到key值末尾
strlen key //返回给定key的值的长度
bitcount key //获取给定key的bit位
getbit key 0 //获取给定key的值,对偏移量上的bit位
incr key //将key值中数字加1
incrby key 10 //将key值中数字加10
incrbyfloat key 1.5 //将key值中数字加1.5(浮点数)
decr key //将key值中数字减1
decrby key 10 //将key值中数字减10
哈希(hash)操作:
//键值(key=>value)对集合。hash 可以存储 232 -1 键值对(40多亿)
hset name key1 value1 //设置hash表name的key-value
hmset name key1 value1 key2 value2 //批量设置hash表name的key-value
hsetnx name key value //只有在字段key不存在时,设置哈希表字段的值
hget name key1 //获取hash表name给定key的值
hget name key2 //获取hash表name给定key的值
hmget name key1 key2 //获取一个或多个给定key的值
hgetall name //获取在哈希表中指定name的所有字段和值
hkeys name //获取哈希表name中所有的字段
hvals name //获取哈希表中name的所有值
hlen name //获取哈希表name中字段的数量
hdel name key1 key2 //删除一个或多个哈希表字段
hexists name key //检查name中的key是否存在
hincrby name key 1 //为哈希表name中的指定字段的整数值加1
hincrbyfloat name key 1.5 //为哈希表key中的指定字段的浮点数值加1.5
hscan name 0 match * count 10 //迭代哈希表中的键值对
列表(list)操作:
//简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)。最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)
lpush name value1 //在列表左边添加元素(可添加多个)
rpush name value2 //在列表右边添加元素(可添加多个)
lpushx name value //将一个值插入到已存在的列表头部
rpushx name value //将一个值插入到已存在的列表尾部
linsert name before/after value2 value1 //before在value2前面插入value1,after在value2后面插入value1
lset name 0 value //通过索引覆盖列表元素的值
lpop name //移除并获取列表的第一个元素
rpop name //移除并获取列表最后一个元素
rpoplpush name1(源列表) name2(目标列表) //移除列表的最后一个元素,并将该元素添加到另一个列表并返回
blpop name //弹出列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
brpop name //弹出列表最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
brpoplpush name1(源列表) name2(目标列表) 10(超时时间) //移除列表的最后一个元素,并将该元素添加到另一个列表并返回, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
ltrim name 1 2 //删除下表为1-2之外的多有元素
lindex name 1 //通过索引获取列表中的元素
lrange name 0 2 //获取列表指定范围内的元素
llen name //获取列表长度
lrem name 0(count) value //移除name中与value相等的值,count=0移除所有与value相等的值,!=0 移除绝对值count个与value相等得值
集合(set)操作:
//是string 类型的无序集合,是通过哈希表实现的。集合成员是唯一的,集合对象的编码可以是 intset 或者 hashtable。最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)
sadd name value1 value2 //添加有个或者多个value到集合中
smembers name //返回集合的所有成员
srandmember name 2(默认为1) //返回集合中一个或多个随机数
spop nmae //移除并返回集合中的一个随机元素
srem name value1 value2 //移除集合中一个或多个成员
scard name //获取集合的成员数
sismember name searchValue //判断searchValue元素是否存在集合中
smove name1 name2 value //将name1集合内成员value移动到name2集合中
sdiff name1 name2 //返回给定所有集合的差集
sdiffstore new name1 name2 //返回给定所有集合的差集并存储在new中
sinter name1 name2 //返回给定所有集合的交集
sinterstore new name1 name2 //返回给定所有集合的交集并存储在new中
sunion name1 name2 //返回所有给定集合的并集
sunionstore new name1 name2 //返回给定所有集合的并集并存储在new中
sscan name 0 match * count 10 //迭代集合中的元素
有序集合(zset)操作:
// zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
zadd name 0(score) 2(value) 0(score) 5(value) ... //向有序集合添加一个或多个成员
zscore name value //返回指定成员的分数
zcard name //获取有序集合的成员数
zcount name 0(min) 10(max) //获取有序集合指定分数区间的成员数
zlexcount name -(减号表示最小) +(加号表示最大) //计算指定字典区间内成员数量,范围可以用- + [ ( 表示
zlexcount name [a [b //开头字字母在a和b之间
zlexcount name (a (b //开头字字母不在a和b之间
zrange name 0 10 //获取有序集合指定索引区间内的成员
zrangebyscore name 0 10 //获取有序集合指定分数区间内的成员
zrangebylex name -/[a/(a +[b(b //获取有序集合指定字典区间内的成员
zrank name value //返回有序集合中指定成员的索引
zrevrange name 0 10 //返回指定索引区间内数据,按分数递减排序
zrevranggebyscore name 0 100 //返回指定分数区间内数据,按分数递减排序
zrevrank name value //返回指定成员的排名,按分数值递减排序计算
zincrby name 1/+5/-7 value //有序集合中指定成员(value)的分数加上/减去指定数字
zinterstore newName 3(num) name1 name2 name3 //计算一个或多个有序集合的交集,并将结果存储在newName中,num是计算key的数量
zunionstore newName 3(num) name1 name2 name3 //计算一个或多个有序集合的并集,并将结果存储在newName中,num是计算key的数量
zrem name value1 value2 //移除有序集合中一个或多个成员
zremrangebyrank name 1 10 //移除有序集合中给定的索引区间的所有成员
zremrangebyscore name 1 10 //移除有序集合中给定的分数区间的所有成员
zremrangebylex name -/[a/(a +[b(b //移除有序集合中给定的字典区间的所有成员
zscan name 0 match * count 10 //迭代有序集合中的元素(包
基数统计(HyperLogLog) 计算一个数据集({1,2,2,3})中的基数集(基数集为{1,2,3}的个数3)
pfadd name 1 2 3 //添加一个或多个元素到HyperLogLog中
pfcount name //返回给定HyperLogLog的基数估算值
pfmerge new name1 name2 //将多个HyperLogLog合并为一个HyperLogLog
发布订阅系统
psubscribe channel/channel* //订阅一个频道
pubsub channels //查看订阅与发布系统状态
publish channel message //发布信息到指定频道
punsubscribe channel/channel* //退订指定频道
stream
xadd name * key1 value1 key2 value2 ... //新建一个stream,*是消息id,代表redis生成,也可以自己指定,需要确保自增,格式为:整数-整数
xlen name //消息队列长度
xrange name - + //获取消息队列数据,后面加上count XX 表示看指定条数的数据
xrevrange name + - //反向获取消息列表,后面加上count XX 表示看指定条数的数据
xread block 0 count 10 streams name 0-0 //消费一条数据,'block 0' 可选,加上是代表阻塞获取数据。'count 10' 代表获取条数,'0-0'消费id,0-0代表从头部第一个读取,换成'$'代表从尾读读取
xgroup create name(stream的名称) consumer-group-name(消费组的名称) 0-0(id) //创建一个消费组,并从头消费一条信息,0-0换成$就是从尾部消费一条信息
xreadgroup group consumer-group-name(消费组名称) consumer-name(组内消费者名称) block 0 count 10(消费条数) streams name(stream的名称) > //组内消费,>表示从房前消费组的last_delivered_id往后读,'block 0'可选,表示阻塞读取消息
xinfo stream name(stream的名称) //查看流和消费者组的相关信息
xinfo groups name(stream的名称) //查看消费者组的信息
xinfo consumers name(stream的名称) consumer-group-name(消费组名称) //查看消费组内消费者的信息
xtrim name maxlen 3 //修剪消息,maxlen是修剪策略,目前只实现了这一种,3表示修剪后的数量,会从id最小的开始修剪
xdel name "1636597365910-0"(id) //删除指定id的消息