Redis的特点
- 纯内存的访问,所有数据存到内存中
- 非阻塞I/O
- 单线程避免了线程切换和竞态产生的消耗,但也有缺点,如果有命令执行时间过长,会造成数据库阻塞
慢查询
- slowlog-log-slower-than预设阀值,它的单位是微秒(1秒=1000毫秒=1000000微秒),默认值是10000。slowlog-log-slower-than=0会记录所有的命令,slowlog-log-slowerthan<0对于任何命令都不会进行记录。
- 实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度
- 慢查询只记录命令执行时间, 并不包括命令排队和网络传输时间。 因此客户端执行命令的时间会大于命令实际执行时间。
- 由于慢查询队列是先进先出的队列,所以要定期将日志记录下来,已被查验
Redis Shell
Redis-cli
-h 服务端ip
-p 端口
-r (repeat)将命令执行多次。redis-cli -r 3 ping
-i (interval)每个几秒执行几次。redis-cli -r 5 -i 1 ping
-a (auth)密码
--slave。将当前客户端模拟成服务端的从节点。
--rdb。生成RDB持久化文件,保存到本地。可用来做持久化文件的定期备份
--eval。执行lua脚本
--latency。测试客户端到目标redis服务的网络延迟;--latency-history,每隔多久输出一次网络延迟;--latency-dist,使用统计图表的形式从控制台输出延迟统计信息
--stat。实时获取redis的重要统计信息。key的数量、内存占用量、客户端数量、请求数量、连接数量
Redis-server
1.启动redis
2.redis-server --test-memory 1024。检测当前操作系统能否稳定地分配指定容量的内存给Redis
redis-benchmark
可以为Redis进行基准性能测试
-c。代表客户端的并发数量(默认是50)
-n(num) 。代表客户端请求总量(默认是100000) 。redis-benchmark-c100-n20000代表100各个客户端同时请求Redis, 一共执行20000次
-r(random) 选项, 可以向Redis插入更多随机的键
--csv选项会将结果按照csv格式输出, 便于后续处理, 如导出到Excel等
Pipeline
原生批量命令和Pipeline对比。
- 原生批量命令是原子的,Pipeline是非原子的。
- 原生批量命令是一个命令对应多个key,Pipeline支持多个命令。
- 原生批量命令是Redis服务端支持实现的,而Pipeline需要服务端和客户端的共同实现。
Pipeline(流水线)机制能将一组Redis命令进行组装,通过一次RTT传输给Redis,
再将这组Redis命令的执行结果按顺序返回给客户端
性能测试。执行速度一般比逐条执行要快,客户端和服务端的网络延迟越大,
Pipeline的效果越明显
一次组装Pipeline数据量过大, 一方面会增加客户端的等待时间, 另一方面会造成一定的网络阻塞,
可以将一次包含大量命令的Pipeline拆分成多次较小的Pipeline来完成
Pipeline只能操作一个Redis实例
Redis事务
-
简单事务功能,multi和exec命令之间的命令,能够原子顺序执行。
-
如果事务之中存在命令拼写错误,整个事务不会执行;如果存在运行时错误,事务并不会回滚(这点需要注意)
-
watch命令,是事务执行之前,确保事务中的key没有被其他客户端修改过,修改过的话就不执行事务。类似于乐观锁
-
Redis的事务比较简单,无法保证事务回滚,无法实现事务内命令之间的逻辑运算
Bitmaps 和 HyperLogLog
- Bitmaps本身的数据结构就是字符串,支持对字符串的位进行操作。
- HyperLogLog 则是对同样位操作,但是采用一种特别的算法,节省磁盘占用量,
但是会有一定的误差率
发布订阅
发布消息。publish channel message 。
订阅消息。subscribe channel [channel ...]。多个客户端订阅同一个频道,都会受到消息推送,类似于广播。
取消订阅。unsubscribe [channel [channel ...]]
按照模式订阅和取消订阅。psubscribe pattern [pattern...];punsubscribe [pattern [pattern ...]]
订阅查询。pubsub channels [pattern],查看活跃的频道;pubsub numsub [channel ...],查看频道订阅数;pubsub numpat,查看模式订阅数