瑞士军刀 Redis
- 慢查询 找到系统中瓶颈的命令
客户端请求的生命周期
两点说明:
1.慢查询发生在第三阶段
2.客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素
两个配置默认值
config get slowlog-max-len=128 一种队列 通常设置1000
config get slowlog-log-slower-than=10000 微秒 10ms 通常设置1ms
定期持久化慢查询
动态配置
config set slowlog-max-len 1000
config set slowlog-log-slower-than 1000
慢查询命令
slowlog get [n] 获取慢查询队列
slowlog len 获取慢查询队列长度 队列里面有多少慢查询
slowlog reset 清空慢查询队列
- pipeline 提高客户端的效率
流水线
减少网络时间的消耗
- 发布订阅 redis的发布订阅功能
角色:发布者 订阅者 频道 订阅者可以订阅多频道(右图)
消息队列 要抢 Redis不仅可作为缓存服务器,还可用作消息队列。它的列表类型天生支持用作消息队列
发布订阅 都有
- Bitmap 减少内存的方案
setbit getbit bitcount
Java连接远程的redis时,连接被拒绝。
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
at redis.clients.jedis.Connection.connect(Connection.java:154)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:83)
at redis.clients.jedis.Connection.sendCommand(Connection.java:93)
at redis.clients.jedis.BinaryClient.set(BinaryClient.java:100)
at redis.clients.jedis.Client.set(Client.java:29)
at redis.clients.jedis.Jedis.set(Jedis.java:65)
at redis.Demo1.main(Demo1.java:10)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at redis.clients.jedis.Connection.connect(Connection.java:148)
... 6 more
可能的原因:
redis服务器的redis.conf配置中bind 127.0.0.1
应该改为:bind 0.0.0.0
- HyperLogLog 极端的减少内存的方案/数据结构(算法)
本质还是字符串
- GEO 地理信息
3.2版本添加的新特性 用来计算地理位置相关 其实zset类型实现