运行

安装
yum install redis

启动服务
redis-server

停止服务
ctrl+c

启动客户端
redis-cli

退出客户端
quit

键值对

设置键值对(区分大小写)
set key value

获取键的值
get 键名

删除键
del 键名 删除指定键
flushall 删除所有键

判断键是否存在
exists 键名 1存在0不存在

查看有哪些键
keys 匹配的模式 (*为所有的键,*+内容1 表示查找以内容1为结尾的键)

如何在redis中显示中文
redis的键和值都是以二进制的形式存储的,默认不支持中文,但是存储的内容是正确的,只是在查询时以二进制的形式展示。如果想要展示中文,需要在启动客户端的时候加上–raw参数

查看一个键值对的过期时间
ttl 键名 返回值:-1表示没有设置过期时间 -2表示已经过期

带有过期时间的键值对
给已有的键值对设置过期时间 expire 键名 时间
设置有过期时间的键值对 setex 键名 时间 值

只有当键不存在的时候才设置键的值,如果键已经存在不做任何动作
setnx 键名 值

列表

定义
列表list,一般用来存储和操作一组有顺序的数据,和数据类似

将元素添加到列表的头部或尾部
lpush/rpush 列名 值1 值2…
同时添加多个值,添加顺序是从前到后,在列表中的位置是从后到前

获取列表内容
lrange 列名 起始位置 结束位置(0 -1会获得列表的所有元素)

从列表的头部或尾部删除元素
lpop\rpop 列名 要删除的元素个数,不加默认为1

查看列表长度
llen 列名

保留列表指定范围的元素,之外的删除
ltrim 列名 开始索引 结束索引

集合

定义
集合set,一种无需集合,与列表的区别在于列表中的元素可以重复,集合中的元素不能重复

添加一个集合
sadd 集合名 要添加的元素

查看集合中的元素
smembers 集合名

判断一个元素是否在集合中
sismember 集合名 元素

删除集合中的元素
srem 集合名 要删除的元素

集合的运算
交集并集

有序集合sortedset

与集合的区别
有序集合的每个元素都会关联一个浮点类型的分数,然后按照找个分数来对集合中的元素进行从小到大的排序。元素不能重复但是分数可以重复

向有序集合添加元素
zadd 有序集合名 要添加的元素(由分数和成员组成,分数在前成员在后)

查看有序集合中的元素
zrange 有序集合名 开始位置 结束位置(只会输出成员不会输出分数,需要输出分数需要在之后加withscores)

查看有序集合中元素的分数
zscore 有序集合名 元素名

查看有序集合中成员的排名
zrank 有序集合名 元素名(返回的是从小到大的index,但是排名一般是从大到小,如果想获得从大到小的1索引,使用zrevrank进行查看)

哈希

定义
哈希是一个字符类型的字段和值的映射表,简单来说就是一个键值对的集合,适合用来存储对象

向哈希中添加一个键值对
hset 哈希名 要添加的键名 要添加的值

获取哈希中的某个键的值
hget 哈希名 键名

获取哈希中的所有键值对
hgetall 哈希名

删除哈希中的某个键值对
hdel 哈希名 键名

判断哈希中某个键值对是否存在
hexists 哈希名 键名

发布订阅模式

将消息发送到指定的频道
publish 频道名 消息内容

订阅指定频道
subscribe 频道名

发布订阅模式的缺点
无法持久化,无法记录历史消息

stream

向stream中添加消息
xadd 消息名 *(自动生成一个消息的id,redis会保证生成的id是递增的)消息内容 会返回自动生成消息的id
xadd 消息名 数字1-数字2(手工指定id,需要保证id的递增) 消息内容

查看stream中消息的数量
xlen 消息名

查看stream中消息的详细内容
xrange 消息名 开始 结束(- + 表示所有消息)

删除stream中的消息
xdel 消息名 id名
xtrim 消息名 maxlen 0 表示删除所有消息。回车后返回删除的消息的条数

读取stream中的消息
xread count 数字1(表示一次读取数字1的消息)block 数字2(表示如果没有消息的话就阻塞数字2毫秒) streams 要读取的消息名 数字3(从数字3的索引开始读取,为$则获取从现在开始以后的最新的消息)

创建消费者组
xgroup create 消息名 组名 id

查看消费组的信息
xinfo groups 消息名(返回:组名,消费者的数量,待处理的消息数等等)

向消费者组添加消费者
xgroup createconsumer 消息名 组名 消费者名

读取消息
xreadgroup 组名 消费者名称 count 每次要读取的消息的数量 block 阻塞的时间 streams 频道名 >(表示从这个消息中读取最新的消息)

地理空间 geospatial

作用
提供了一种存储地理位置信息的数据结构,同时支持对地理位置进行各种计算操作

添加一个地理位置信息
geoadd 信息名 经度 纬度 城市名(可一次添加多个)

获取某个地理位置的经纬度
geopos 信息名 城市名

计算两个地理位置之间的距离
geodist 信息名 城市名1 城市名2

搜索指定范围内的成员并返回
以某个城市为中心搜索一定范围内的城市 geosearch 信息名 frommember 城市名 byradius 搜索半径

hyperloglog

定义
一种用来做基数统计的算法,并非redis独有,基数就是一个集合中不计算重复元素的元素个数。
优点是占用内存小,缺点是会有一定的误差

添加元素
pfadd 集合名 元素名

查看基数
pfcount 集合名

合并两个元素
pfmerge 合并后的结果集合3 集合1 集合2

位图bitmap

位图是字符串的拓展

设置某个偏移量的值
setbit 键名 偏移量 值

获取某个偏移量的值
getbit 键名 偏移量

用字符串命令设置偏移量的值
set 键名 “值”(可以用16位进制表示2进制)

统计某个键的值里有多少1
bitcount 键名

某个键的值里第一个出现0或1的位置
bitpos 键名 0/1

位域bitfield

作用
能够将很多小的整数存储到一个较大的位图中,可以更加高效地使用内存

设置一个id为play:1,第一个位置值为1的数据
bitfield play:1 set u8(表示八位的无符号整数) #0(表示第一个位置) 1(表示等级)

获取上述数据的第一个位置的值
bitfield play:1 get u8 #0

使上述数据第一个位置的值加1
bitfield play:1 incrby u8 #0 1

redis事务

可以在一次请求中执行多个命令,主要通过multi和exec实现的,在redis中,事务并不能保证所有命令都会执行成功,事务中的任何一个命令失败,其他命令依然会被执行。在事务执行的过程中,其他客户端提交的命令请求,并不会被插入到事务的执行命令序列中。

持久化

rdb(redis database)
在指定时间间隔内,将内存中的数据快照写入磁盘,快照是某一个时间点上数据的完整副本,可以通过配置文件redis.conf中的save参数来配置,自动触发
例子:
save 3600 1 表示3600s内有一次修改进行一次快照
save 300 100 表示300s内有100次修改进行一次快照

也可以使用save命令来手工触发快照
save 返回一个ok表示已经快照完成,生成的文件是dump.rdb

bgsave 手动触发快照的另一个命令,会单独创建一个子线程,来负责将内存中的数据写入到硬盘中,这样的话主线程就可以继续处理请求了,但是这个过程中有一定的性能损耗

aof(append-only file)
意思是追加文件,原理是在执行写命令的时候,不仅会将命令写入到内存中,还会将命令写入到一个追加的aof文件中,它会以日志的形式来记录每一个写操作。当redis重启的时候,就会通过重新执行aof文件中的命令来在内存中重建整个数据库的内容

开启aof的方式
在配置文件中将append only 参数的值改成yes

主从复制

指将一台redis服务器的数据复制到其他redis服务器,也叫主节点和从节点。一个主节点可以有多个从节点,而每个从节点只能有一个主节点。数据的复制是单向的,只能由主节点到从节点。一般来说,主节点负责写操作,从节点负责从操作。主节点会将自己的数据变化通过异步的方式发送给从节点,从节点接收到主节点的数据之后,更新自己的数据,这样就达到了数据一致的目的

主节点不需要修改任何配置,因为默认的配置就是主节点

从节点的配置
通过命令行执行命令
使用slaveof命令来直接指定主节点的ip和端口(不常用)

通过配置文件来修改
redis的配置文件是redis.conf
端口号修改为从节点的端口号
把pidfile配置项的文件名加上从节点端口号
dbfilename文件名后也加上端口号
replicaof 用来指定主节点的选项,ip地址与端口号改为主节点的

哨兵模式

会以一个独立的进程运行在redis集群中,用来监控redis集群中的各个节点是否运行正常,主要功能有:
监控 通过不断地发送命令来检查redis节点是否正常
通知 如果发现某个节点出现了问题,那么哨兵就会通过发布订阅模式来通知其他节点
自动故障转移 当主节点不能正常工作时,哨兵会开始一个自动故障转移的操作。它会将一个从节点升级为新的主节点,然后再将其他从节点指向新的主节点

配置哨兵模式
1.新建配置文件
vim sentinel.conf
2.在文件中添加配置
sentinel monitor 要监控的主节点的名字 ip 端口号 进行故障转移需要同意的哨兵节点数量
3.启动哨兵节点
redis -sentinel 配置文件的名字

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐