一、Redis是什么
1、redis 完全开源 ,高性能的Key-value 内存数据库;
高性能:能读的速度是110000次/s,写的速度是81000次/s;
原子性:对键值得操作只有成功或者不成功;
数据类型多:支持strings(字符串),list(列表),set(集合),zset(有序集合),hash(哈希表)等数据结构存储
注意:Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存但是相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,可以做很多内部复杂性很强的事情。
二、Redis常用命令
命令不区分大小写,key和value区分大小写
1、redis连接
#本地打开客户端,端口不是固定的
$ redis-cli
redis 127.0.0.1:6379>
#远程打开客户端,
$ redis-cli -h host -p port -a password
redis 127.0.0.1:6379>
其他相关命令
client list 返回连接到redis服务端的客户端列表
client setname 设置当前连接的服务名称 ; client getname 获取当前连接的服务名称
quit 退出当前客户端
设置密码
redis 127.0.0.1:6379>config get requirepass
>"requirepass"
>""
返回空说明未设置密码
redis 127.0.0.1:6379>config set requirepass "123456"
>ok
设置了密码后需要用auth命令验证后才能执行命令;
redis 127.0.0.1:6379>auth "123456"
>ok
2、选择数据库
#选择0号数据库,redis默认使用数据库0
redis>select 0
ok
#切换数据库1
redis>select 1
ok
测试服务是否启动 使用ping命令
redis 127.0.0.1:6379> PING
PONG
3、键命令,格式 command + key_name
set key_name value ;给定键值,返回ok get key_name 获取key的值
del key_name 删除已存在的key 返回删除的数量
dump key ;序列化key;返回被序列化的值,key不存在返回nil
exists key_name 检查key是否存在,存在返回1,否则返回0
expire key_name time_in_seconds 按秒计设置过期时间
persist key_name 持久化key,可移除过期时间
ttl +key以秒为单位返回剩余时间,pttl+key以毫秒为单位返回剩余时间;
keys key_name* 返回给定名字进行匹配到的key列表, keys * 返回当前库内所有的key列表
move key_name destination_db 移动本地键到目标库,成功返回1,失败返回0
randomkey 随机返回当前库里的key type key_name 返回key的数据类型
rename key_name newname 修改key名称
三、Redis服务管理
1、获取统计信息INFO 命令
可以获取服务端信息,客户端,内存,cpu,持久化,应用,统计信息
redis 127.0.0.1:6379> INFO
2、获取/设置 配置参数信息config get /set
格式 :CONFIG GET parameter CONFIG GET parameter value
redis 127.0.0.1:6379> config get *max-*-entries*
3、重写redis参数配置信息config rewrite
127.0.0.1:6379> CONFIG GET appendonly # appendonly 处于关闭状态
1) "appendonly"
2) "no"127.0.0.1:6379> CONFIG SET appendonly yes # 打开 appendonly
OK127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"127.0.0.1:6379> CONFIG REWRITE # 将 appendonly 的修改写入到 redis.conf 中
OK
四、Redis Stream
Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。
- Consumer Group :消费组,使用 XGROUP CREATE 命令创建,一个消费组有多个消费者(Consumer)。
- last_delivered_id :游标,每个消费组会有个游标 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。
- pending_ids :消费者(Consumer)的状态变量,作用是维护消费者的未确认的 id。 pending_ids 记录了当前已经被客户端读取的消息,但是还没有 ack (Acknowledge character:确认字符)。
消息队列相关命令:
- XADD - 添加消息到末尾
- XTRIM - 对流进行修剪,限制长度
- XDEL - 删除消息
- XLEN - 获取流包含的元素数量,即消息长度
- XRANGE - 获取消息列表,会自动过滤已经删除的消息
- XREVRANGE - 反向获取消息列表,ID 从大到小
- XREAD - 以阻塞或非阻塞方式获取消息列表
消费者组相关命令:
- XGROUP CREATE - 创建消费者组
- XREADGROUP GROUP - 读取消费者组中的消息
- XACK - 将消息标记为"已处理"
- XGROUP SETID - 为消费者组设置新的最后递送消息ID
- XGROUP DELCONSUMER - 删除消费者
- XGROUP DESTROY - 删除消费者组
- XPENDING - 显示待处理消息的相关信息
- XCLAIM - 转移消息的归属权
- XINFO - 查看流和消费者组的相关信息;
- XINFO GROUPS - 打印消费者组的信息;
- XINFO STREAM - 打印流信息