简介
redis全称remote dictionary server,是开源的基于内存的数据存储系统
支持:
- 五种基本数据类型:
- 字符串(String):存储文本、数字或二进制数据,支持常见的增、查、改、删操作。
- 列表(List):有序的字符串集合,可以从两端添加或删除元素,适合实现队列和栈。
- 集合(Set):无序的字符串集合,不允许重复元素,适合做去重和集合运算。
- 有序集合(SortedSet):类似集合,但每个元素有一个分数,按分数排序,适合做排行榜等。
- 哈希(Hash):键值对的集合,用于存储对象(如用户信息),可以按字段操作。
- 五种高级数据类型:
- 消息队列(Stream):用于存储和处理消息流,支持生产者-消费者模式。
- 地理空间(Geospatial):存储经纬度数据,支持地理位置查询和距离计算。
- HyperLogLog:用于估算不同元素的基数(不重复元素的数量),内存占用极少,适合大规模统计。
- 位图(Bitmap):按位存储数据,用于高效的开关标记和状态记录。
- 位域(Bitfield):操作二进制位的结构,支持复杂的位级别处理和统计。
下载与启动:
安装:
-
WSL中安装(windows的linux子系统,Windows Subsystem for Linux)
打开powershell,输入wsl,即可输入bash语法
-
docker安装
-
windows的.msi文件安装
启动服务端:
bash中:redis-server
powershell中:redis-server.exe
启动客户端:
一般先启动服务,然后在客户端连过去,写redis命令
不支持中文查看:
redis-cli
支持中文查看:
redis-cli --raw
redisInsight
可视化管理redis服务的应用
redis常用命令:
string
- redis中的数据是以键值对的形式存储的
- redis区分大小写
- 设置数据:SET my_key my_value
- 获取数据:GET my_key
- 删除数据:DEL my_key
- 判断是否存在:EXISTS my_key
- 查看都有哪些键:KEYS *
- 删除所有键:FlUSHALL
- 清空屏幕:clear
- 查看某键的过期时间(-1:无过期时间 -2:已过期):TTL my_key
- 设置过期时间为10s:
- EXPIRE my_key 10
- SETEX my_key 10 my_value
- 只有键不存在时才设置键的值,存在则不设置:SETNX my_key my_value
list
- 插入列表:LPUSH list a
- 获取起始位置s到结束为止e的列表元素:LRANGE list 0 -1
- 删除头部or尾部的n个元素:LPOP list n RPOP list n
- 查看长度:LLEN list
- 只保留start和stop之间的元素,其余删除:LTRIM list start stop
set
- 添加:SADD 集合 元素
- 查看:SMEMBERS 集合
- 判断是否在集合中:SISMEMBER 集合 元素
- 删除:SREM 集合 元素
- 集合之间也支持运算
SortedSet,也叫Zset
Hash
添加:HSET person name laoyang
获取值:HGETALL person 或 HGET person name
获取所有键:HKEYS person
发布订阅功能
发布:PUBLISH
订阅:SUBSCRIBE
局限性:无法持久化、无法记录历史消息
Stream
添加消息:XADD
查看数量:XLEN
查看消息内容:XRANGE
删除:XDEL 或 XRANGE
读取消息:XREAD(可以只读取最新消息)
创建消费者组:XGROUP CREATE 频道名 组名 组id
查看组信息:XINFO GROUPS 频道名
创建消费者:XGROUP CREATECONSUMER 频道名 组名 消费者名
消费者读取消息:XREADEGROUP GROUP 组名 消费者名 COUNT 消息数 BLOCK 3000(如没有消息,阻塞3000ms) STREAMS 频道名 >(表示读取最新消息)
bit
设置偏移量的值:SETBIT
获取偏移量的值:GETBIT
查看多少个1:BITCOUNT
第一个出现0或1的位置:BITPOS
bitfield
redis事务
MULTI开启事务,然后执行一系列命令,都放入缓存队列中,EXEC命令会执行所有队列中的命令,有的会成功有的会失败,互不影响
redis持久化
- RDB (Redis Database):.rdb文件,即为快照文件,更适合备份
- AOF (Append Only File):.aof文件,实时追加每一个写操作
主从复制
主节点与从节点是一对多的关系,主节点负责数据的修改,从节点负责数据的读取,从节点通过主从复制维持与主节点的一致性
哨兵模式
即自动故障转移,哨兵的三大作用:
- 不断发布消息,保证节点正常工作
- 某个节点出问题,通过发布订阅通知其他节点
- 自动故障转移,选择新主节点