Redis深度历险-Redis的拓展使用

查看Redis信息

  • info指令可以显示的信息非常多,分为9大块,每块都有非常多的参数
    • Server:服务器运行的环境参数
    • Clients:客户端相关信息
    • Memory:服务器运行内存统计数据
    • Persistence:持久化信息
    • Stats:通用统计数据
    • Replication:主从复制相关关系
    • Cpu:Cpu使用情况
    • Cluster:集群信息
    • KeySpace:键值对统计数据量信息
  • info 获取所有信息
  • info + 某块名称=获取某块内容
    • info memory

分布式锁

  • 避免主从下,客户端在主节点申请一把锁后,主节点宕机,从节未能同步,产生的不一致的情况
  • 使用RedLock通过提供的多个没有主从的Redis实例
  • 向过半的节点发送set指令,一旦一半以上的节点同意,则加锁成功

过期与淘汰

  • redis会将每个设置的了过期事件的key放入一个独立的字典中
    • 分为集中处理(定时任务定时遍历删除)和零散处理(客户端访问时检查key是否过期,过期即删除)
  • Redis使用内存超出内存限制时,内存数据和磁盘产生频繁交换,导致性能下降
    • Redis提供多种可选策略,来淘汰内存
    • noeviction:不能继续写请求,只提供del,和读请求
    • volatile-lru:淘汰设置过期时间且使用次数最少key
    • volatile-ttl:淘汰设置过期时间且剩余时间最小key
    • olatile-random:随机淘汰设置过期时间的key
    • allkeys-lru:所有的key中,使用最少次数的key
    • allkeys-random:所有key中,随机淘汰
  • Redis的使用次数和最少使用的算法是近似LRU算法

懒删除

  • 直接删除del,释放内存非常快,但是当一个bigkey被删除时,就会带来明显的卡顿
  • 对删除操作进行懒处理,将删除动作交给后台线程进行异步回收
    • 使用unlink指令对删除操作进行懒处理
  • 主线程将unlink元素从redis上摘除,将其内存回收包装为任务,塞入异步任务队列,后台线程从此队列拿任务操作

保卫Redis

  • 指令安全
    • 危险指令
      • keys:会造成redis卡顿
      • flushall和flushdb会让Redis所有数据清空
    • 使用rename-command将危险指令替换为其他字符或“删除”
      • rename-command [危险指令] [自定义命令]
      • rename-command [危险指令] “”->危险指令不能使用
  • 端口安全
    • Redis默认监听6379端口,所以可能会被暴露在公网上,黑客可以通过Redis执行Lua脚本拿到服务器权限就会清空数据库
    • 修改监听端口和密码
      • requirepass [密码]
      • masterauth [密码]->主节点设置密码,从节点必须配置密码
  • Lua脚本安全
    • 可以禁止Lua脚本由用户输入的内容UGC生成
  • SSL代理
    • Redis不支持SSL链接,意味着客户端和服务器之间的数据不应该直接暴露否则会被监听
    • 要在公网上使用,可以用SSL代理
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值