think icon indicating copy to clipboard operation
think copied to clipboard

redis入门

Open bytemofan opened this issue 6 years ago • 0 comments

1、redis基本数据类型 字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)

2、redis客户端进入命令: $ redis-cli

3、redis键命令基本语法:

redis 127.0.0.1:6379> COMMAND KEY_NAME

更多命令参考:https://redis.io/commands

4、什么是基数? 比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。 相关命令:

PFADD  添加元素到HyperLogLog
PFCONUNT  返回给定HyperLogLog的基数估算值
PFMERGE 将多个HyperLogLog合并为一个

5、redis发布订阅 redis客户端可以订阅任意数量的频道。 频道充当发布者的角色。 相关命令:

psubscribe 订阅一个或多个给定模式的频道
pubsub  查看订阅与发布系统状态
publish 将消息发布到指定的频道
punsubscribe 退订所有给定模式的频道
subscribe 订阅给定的一个或多个频道
unsubscribe 退订给定的频道

6、redis事务 redis事务可以一次执行多个命令。

  • 批量操作在发送EXEC命令前被放入队列缓存。
  • 收到EXEC命令后进入事务执行,事务中任意命令执行失败,其它命令依然被执行
  • 事务执行过程中,其它客户端提交的命令请求不会插入到事务执行命令序列中 事务执行的三个阶段:
开始事务 —> 命令入队 —>  执行事务

注:单个redis命令是原子性的。但redis事务的执行并不是原子性的,redis没有提供事务的原子性维持机制。 redis事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。 相关命令:

discard  取消事务,放弃执行事务块内的所有命令
exec   执行事务内的所有命令
multi   标识一个事务块的开始
unwatch  取消watch命令对key的监视
watch  监视一个或多个key,如果这些key被其它命令修改,那么事务会被打断

7、redis脚本 基本语法:

redis 127.0.0.1:6379> eval script numkeys key [key …] args [args …] 

Redis 脚本使用 Lua 解释器来执行脚本。 相关命令:

eval 执行脚本
evalsha 执行脚本
script exists  查看指定的脚本是否已经被保存在缓存中
script flush 从脚本缓存中移除所有脚本
script kill  杀死当前正在运行的Lua脚本
script load 缓存脚本,不立即执行

8、redis连接 redis连接命令主要用于连接redis服务。 相关命令:

auth 验证密码是否正确
echo 打印字符串
ping 查看服务是否运行
quit 关闭当前连接
select 切换到指定的数据库

9、redis服务器相关命令:

info 获取服务器统计信息
bgrewriteaof 异步执行一个AOF(AppendOnly File)文件重写操作
bgsave  在后台异步保存当前数据库的数据到磁盘
client kill 关闭客户端连接
client list  查看连接到服务器的客户端列表
client getname 获取连接的名称
client setname 设置连接的名称
client pause 在指定时间内终止运行来自客户端的命令
cluster slots 获取集群节点的映射数组
command 获取 Redis 命令详情数组
command count 获取redis命令总数
command getkeys 获取给定命令的所有键
command Info 获取指定命令的描述
time  获取服务器当前时间
config get  获取指定配置的值
config set  设置指定配置的值
config reqrite 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
config resetstat  重置 INFO 命令中的某些统计数据
dbszie  返回当前数据库中key的数量
debug object key 获取当前key的调试信息
debug segfault 让redis服务崩溃
flushall 清除当前数据库的所有key
flushdb 清除当前数据库的所有key
lastsave 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
monitor 实时打印出 Redis 服务器接收到的命令,调试用
role 返回主从实例所属的角色
save 同步保存数据到硬盘
shutdown 异步保存数据到硬盘,并关闭服务器
slaveof 将当前服务器转变为指定服务器的从属服务器(slave server)
slowlog 管理 redis 的慢日志
sync 用于复制功能(replication)的内部命令

10、redis数据备份与恢复 数据备份: save命令、bgsave命令(后台执行) 恢复:将备份文件(dump.rdb)移动到redis的安装目录并启动服务即可。查看安装目录命令使用:config get dir

11、redis安全 通过redis的配置文件设置auth密码。使用命令:

CONFIG get requirepass   # 查看是否设置密码
CONFIG set requirepass “123456” # 设置密码
AUTH “123456” # 客户端登录验证

12、redis性能测试 基本语法: redis-benchmark [option] [option value]

可选参数如下: image

13、redis客户端连接 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 最大连接数设置:config get maxclients 14、redis管道技术 Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。 优势:提升redis服务的性能。

15、redis分区 分区是分割数据到多个redis实例的处理过程,因此每个实例只保存key的一个子集。 优势:

  • 充分利用多台计算机的内存和值,允许构造更大的数据库
  • 利用多核和多台计算机,扩展计算力和网络带宽 不足:
  • 涉及多个key的操作不被支持
  • 涉及多个key的事务不能使用
  • 数据处理复杂
  • 增加删除容量复杂

bytemofan avatar May 28 '18 04:05 bytemofan