基于内存的数据存储系统
redis中数据以键值对存储的
键区分大小写
redis默认都是使用字符串存储数据
//启动服务
redis-server
//连接客户端
redis-cli
//连接客户端,--raw表示以原始的形式显示内容
redis-cli --raw
set keyname value
get keyname
del keyname
//判断是否存在某个key
exists keyname
//显示全部key
keys *
//显示以me结尾的key
keys *me
//查看过期时间
//-1表示不会过期
//-2表示键不存在或者纯在过已经过期
ttl keyname
//设置键的过期时间,例子是十秒
expire keyname 10
//设置键并设置过期时间
setex keyname 5 value
//当键不存在时设置键的值
setnx keyname value
列表list
类似于数组
//向列表头部加入数据
lpush letters a
//遍历列表
//0表示起始位置,-1表示最后一个
lrange letters 0 -1
//一次性从头部加入多个数据
lpush letters b c d e
//从尾部添加元素
rpush letters f
//从头部删除一个元素
lpop letters
//获取长度
llen letters
//删除指定元素以外的列表
//保留1到3的元素
ltrim letters 1 3
set
无序集合 元素不能重复
//添加一个或多个元素
sadd course redis
//查看全部元素
smember course
//查看元素是否在集合里
sismemeber course redis
//删除指定元素
srem course redis
有序集合
//添加一个或多个成员以及分数
zadd result 1 A 2 B 3 C
//查询所有成员
zrange result 0 -1
//查询所有成员及其分值
zrange result 0 -1 withcscores
//查询指定成员的分数
zscore result A
//查看某个成员的排序
//排序是由小到大的
zrank result B
//从大到小的排名
zrevrank result A
哈希
//设置键值对
hset person name lin
hset person age 11
//获取指定键对应的值
hget person name
//获取全部键值对
hgetall person
//删除指定键所在键值对
hdel person
//判断某个键值对是否存在
hexists person phone
发布订阅模式
# 发布模式
publish mychann message
#订阅模式
subscribe mychann
消息无法持久
无法记录历史消息
通过stream解决
//加入消息
xadd mychann * course mysql
//查看长度
xlen mychann
//遍历消息
xrange mychann - +
//删除消息
xdel mychann 1739431483258-0
//删除所有消息
xtrim mychann maxlen 0
//指定ID
//第一个数字是时间戳,第二个数字是序列号
//保证ID的递增
xadd mychann 1-0 course git
//count 2表示一次读取两个;block表示没有消息就阻塞1000毫秒;0表示从头读取
xread count 2 block 1000 streams mychann 0
//获取从现在开始新加的消息
xread count 2 block 1000 streams mychann $
//添加消费者组group1
xadd create mychann group1 0
//查看消费者组的信息
xinfo groups mychann
//增加消费者
xgroup createconsumer mychann group1 consumer1
//读取消息
xreadgroup group group1 sonsumer1 count 2 block 3000 streams mychann >
Geospatial地理空间
//添加城市及其经纬度
geoadd city 116.405285 39.904989 beijing
//查看某个城市的经纬度
geopos city beijing
//返回两个城市之间的距离
geodist city beijing shanghai
//距离一定距离以内的城市
geosearch city frommermber shanghai byradius 300 km
HyperLogLog
用来做基数统计
使用随机算法
//添加
pfadd course git docker redis
//统计数量
pfcount course
//合并
pfmerge result course course2
Bitmap位图
string类型的扩展
//设置位图偏移量的值
setbit dian 1 0
//获取位图偏移量的值
getbit dian 1
//统计key的值里面有多少个bit是1
bitcount dian
//获取key里面第一个出现0的位置
bitpos dianzan 0
bitfield位域
//id:plaryer:1 u8等级 #0表示第一个位置
bitfield player:1 set u8 #0
//获取内存中的状况
get player:1
事务
事务并不能保证所有的命令都会执行成功,它的执行结果取决于事务中的命令
可保证:
- 在发送exec命令之前,所有命令都会被放入到一个队列中缓存起来,不会立即执行
- 在收到exec命令之后,事务开始执行,事务中任何一个命令执行失败,其他命令依然会被执行
- 事务执行的过程中吗,其他客户端提交的,命令请求并不会被插入到事务的执行命令序列中
//开启事务
multi
//结束事务
exec