redis基础命令

redis基础命令
mengnankkzhouredis数据类型
基础命令
String
redis中的数据是以键值对的形式存储的,然后存储是以二进制安全的形式进行存储
默认是不支持中文的,但连接的时候可以加上参数–raw,就是以原始的形式进行存储。这样就可以看到中文了
set:set key value 设置一个键值对
get:get key,返回的是值
1 | 127.0.0.1:6379> set name 你好 |
1 | 127.0.0.1:6379> get name |
del:del key,用来删除一个键
exists:exists key 用来看一个键是否存在
1 | 127.0.0.1:6379> exists name |
返回1表明存在
keys:key * 用来查看所有的键,支持通配符
1 | 127.0.0.1:6379> keys * |
flushall:flushall用来刷新所有的键
TTL:TTL key,用来查看一个键的过期时间
1 | 127.0.0.1:6379> ttl key |
返回-1表示没有过期时间
返回-2表示已经过期
expire:expire key time 设置一个键的过期时间
1 | 127.0.0.1:6379> expire name 99 |
setex:setex key time value,设置一个过期时间的键值
1 | 127.0.0.1:6379> setex age 99 88 |
setnx:setnx key value,只有当键不存在的时候才设置值
List
list是一个有序集合,可以重复
lpush:lpush Listname value,添加到头
rpush:rpush Listname value,添加到尾
lrange:lrange Listname start end,查看一个列表
这里index是从0开始的
1 | 127.0.0.1:6379> lpush list 88 |
lpop:lpop Listname,从头部弹出元素
rpop:rpop Listname,从尾部弹出元素
1 | 127.0.0.1:6379> lpop list |
也可以一次性删除多个元素,后面加上个数就可以了
llen: llen Listname,查看列表的长度
1 | 127.0.0.1:6379> llen list |
ltrim:ltrim name start end,只保留start-end的元素
1 | 127.0.0.1:6379> ltrim list 0 -1 |
set
没有顺序,不能重复
sadd:sadd name value,添加元素
smembers:smembers name,查看元素
1 | 127.0.0.1:6379> sadd class 1 2 3 4 5 8 |
sismember:sismember name value,查看元素是否在set集合中
1 | 127.0.0.1:6379> sismember class 8 |
srem:srem name value,删除元素
1 | 127.0.0.1:6379> srem class 8 |
sortedset
有序集合,每个集合中的元素,都会关联一个浮点类型的分数
按照这个分数进行排序,从小到大
元素是唯一的,但分数是可以重复的
zadd:zadd name score value,插入一个元素
zrange:zrange name start end withscore,查看集合中的元素
1 | 127.0.0.1:6379> zadd r 800 a 600 b 700 c |
1 | 127.0.0.1:6379> zrange r 0 -1 withscores |
zscore:zscore name value,查看该元素的分数
zrank:zrank name value,查看排名
1 | 127.0.0.1:6379> zrank r b |
zrevrank:zrevrank name value,查看排名,从大到小
1 | 127.0.0.1:6379> zrevrank r b |
zrem:zrem name value,删除集合中的元素
hash
hset:hset name key value,设置键值对
hget name key ,获取值
hegt:hgetall name,获取全部的键值对
hdel:hdel name key,删除键值对
hexists:hexists name key,键值对是否存在
hkeys:hkeys name,获取所有键
hlen:hlen name 获取数量
1 | 127.0.0.1:6379> hset person name lihua age 100 |
发布订阅模式
subscribe:subscribe name,订阅频道
publish:publish name value,发布消息到name
1 | 127.0.0.1:6379> subscribe zhou |
1 | 127.0.0.1:6379> publish zhou 你好啊 |
消息无法持久化,无法记录历史消息
stream
xadd name id key value,添加一条消息,id可以使用*自动生成id
xlen name,查看消息的数量
xrange name - +,查看所有的消息
**xdel name id,**删除一条消息
xtrim name maxlen 0,删除所有消息
1 | 127.0.0.1:6379> xadd stram 1-0 man 1 |
xread count 2 block 1000 streams name 0,一次读取两条消息,没有消息阻塞1s,从0开始读取
0可以改成$符号,代表最新的消息
1 | 127.0.0.1:6379> xread count 2 block 1000 streams stram 0 |
xgruop create name gname id,创建一个消费者组,在创建一个之前没存在的组的时候,需要参数mkstream
xinfo groups name ,查看一个组的信息
1 | 127.0.0.1:6379> xgroup create redis group1 0 mkstream |
xgroup createconsumer name group consumer,创建一个消费者
1 | 127.0.0.1:6379> xgroup createconsumer redis group1 consumer1 |
xreadgroup group gname consumer count 2 block time streams name >,读取最新的消息
1 | 127.0.0.1:6379> xreadgroup group group1 consumer1 count 2 block 1000 streams redis > |
geospatial
geoadd name 经纬度 name,添加一个经纬度
geopos name name,获取一个经纬度
geodist name A B ,计算两个地方的距离,默认是米,加上km为千米
1 | 127.0.0.1:6379> geoadd city 116.41667 39.91668 beijing |
geosearch name frommember A byradius 800 KM ,搜索A,⚪800千米以内的地方
1 | 127.0.0.1:6379> geodist city beijing shanghai KM |
bitmap
bitmap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现。bitmap 支持的最大位数是 232 位,使用 512M 内存就可以存储多达 42.9 亿的字节信息。
1 | SETBIT key offset value (offset位偏移量,从0开始) |
很适合用于「签到」这类只有两种取值的场景。比如按月存储,一个月最多 31 天,那么我们一个用于再某一个月的签到缓存二进制就是:
1 | 00000 00000 00000 00000 00000 00000 0 |
当某天签到将 0 改成 1 即可。
setbit name 第几位bit 1,第几位bit改为1
get bit name bitnumber,获取第几位bit的值
1 | 127.0.0.1:6379> SETBIT key1 7 1 |
bitcount name start end,统计start到end1的数量
1 | 127.0.0.1:6379> bitcount key1 0 8 |
BITFIELD key
[GET type offset]
[SET type offset value]
[INCRBY type offset increment]
[OVERFLOW WRAP | SAT | FAIL]
type
:字段类型,比如 i8
、u4
,表示有符号/无符号整数,占几位
i8
:8 位有符号整数(-128 到 127)u4
:4 位无符号整数(0 到 15)
offset
:字段偏移位(第几个 bit)
- 支持绝对偏移
0
、5
,或相对偏移(比如#0
)
value
/ increment
:要设置的值或增加的值
1 | 127.0.0.1:6379> bitfield key1 set u8 0 100 |
BITFIELD mykey INCRBY i5 0 1
把从第 0
位开始的 5 位有符号整数加 1
BITFIELD mykey OVERFLOW SAT INCRBY u4 0 10
如果加法结果超出 u4
(无符号 4 位整数最大 15),则使用 “饱和” 模式(最大值就是 15)
WRAP
(默认):溢出后从头开始(环绕)
SAT
:饱和到最大或最小值
FAIL
:溢出时返回 null,不更新
签到系统模拟
1 | # 一个用于在 2021 年 8 月第一个签到了 |