文章目录

  • 命令使用
  • 客户端使用


命令使用

  • 【推荐】 O(N)命令关注N的数量

    例如hgetall、lrange、smembers、zrange、sinter等并非不能使用,但是需要明确N的值。有遍历的需求可以使用hscan、sscan、zscan代替。


  • 【推荐】 禁用命令

    禁止线上使用keys、flushall、flushdb等,通过redis的rename机制禁掉命令,或者使用scan的 方式渐进式处理。


  • 【推荐】合理使用select

    redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰。


  • 【推荐】使用批量操作提高效率

    原生命令:例如mget、mset。
    非原生命令:可以使用pipeline提高效率

    但要注意控制一次批量操作的元素个数(例如500以内,实际也和元素字节数有关)。

  • pipeline vs 原生命令

    1. 原生的命令是原子操作,pipeline是非原子操作。
    2. pipeline可以打包不同的命令,原生做不到
    3. pipeline需要客户端和服务端同时支持


  • 【建议】Redis事务功能较弱,不建议过多使用,可以用lua替代

客户端使用

  • 【推荐】 避免多个应用使用一个Redis实例

    正例:不相干的业务拆分,公共数据做服务化。


  • 【推荐】 使用带有连接池的数据库,可以有效控制连接,同时提高效率,标准使用方式:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** @author 小工匠* @version v1.0* @create 2020-03-23 22:27* @motto show me the code ,change the word* @blog https://artisan.blog.csdn.net/* @description**/public class Test {public static void main(String[] args) {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(20);jedisPoolConfig.setMaxIdle(10);jedisPoolConfig.setMinIdle(5);JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.18.130",6379,3000, null);Jedis jedis = null;try{jedis = jedisPool.getResource();jedis.set("artisan","biubiubiu~");String value = jedis.get("artisan");System.out.println(value);}catch (Exception e){e.printStackTrace();} finally {//注意这里不是关闭连接,在JedisPool模式下,Jedis会被归还给资源池。if (jedis != null)  jedis.close();}}
}


  • 【建议】高并发下建议客户端添加熔断功能(例如netflix hystrix)

  • 【建议】 设置合理的密码,如有必要可以使用SSL加密访问

Redis进阶-Redis使用建议一二事相关推荐

  1. Redis进阶-Redis的惰性删除

    文章目录 Pre del ------> unlink FLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC 异步队列 AOF Sync 扩展 ...

  2. Redis进阶-Redis集群 【高可用切换】【cluster-require-full-coverage】集群是否完整才能对外提供服务

    文章目录 Pre 需求 :集群不完整仍然需要对外提供服务 验证 Redis Cluster 架构 高可用切换 Code访问测试 继续停掉8006 ,验证集群是否down掉 Pre Redis进阶-Re ...

  3. Redis进阶-Redis 4种MQ 方案对比

    文章目录 Pre 方案1 Pub/Sub 优点 缺点 小结 方案2 List 优点 缺点 小结 方案3 ZSet 优点 缺点 小结 方案4 stream Pre 最终方案-----> Redis ...

  4. Redis进阶-Redis安全相关操作

    文章目录 Pre port command lua script SSL proxy 小结 Pre 这里我们主要谈一下使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失,避免所在主机 ...

  5. Redis进阶-Redis缓存优化

    文章目录 缓存穿透 定义 原因 缓存穿透问题解决方案 缓存空对象 布隆过滤器 缓存同时失效 缓存同时失效解决方案 缓存雪崩 缓存雪崩的解决方案 缓存击穿 ( 热点缓存key重建优化 ) 缓存击穿的解决 ...

  6. Redis进阶 - Redis主从工作原理详解

    文章目录 主从配置 主从工作原理 全量复制 增量复制 主从复制风暴 主从配置 简要回顾一下,Redis的主从配置 复制一份redis.conf文件 将相关配置修改为如下值: port 6380pidf ...

  7. Redis进阶-Redis持久化原理

    文章目录 Pre 快照原理 fork( 多进程) AOF 原理 AOF 重写 fsync 运维 Redis 4.0 混合持久化 Pre Redis-16Redis备份(持久化) Redis 的数据全部 ...

  8. Redis进阶-Redis对于过期键的三种清除策略

    文章目录 Pre Redis Key的超时设置处理 被动删除 主动删除 当前已用内存超过maxmemory限定时,触发主动清理策略 总结 Pre Redis-17Redis内存回收策略 Redis K ...

  9. Redis进阶-Redis键值设计及BigKey问题

    文章目录 键值设计 key设计 value设计 big key 定义 反例 bigkey的产生 如何优化bigkey 删除bigKey的注意事项 bigkey的危害 键值设计 key设计 (1)[建议 ...

最新文章

  1. 23.2 编写笨的程序
  2. ArtRage中文版
  3. CSS3的常用属性(一)
  4. html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码
  5. 「基于模型的系统工程」的发展历程
  6. c# WebService添加SoapHeader认证
  7. linux给目录加裸设备磁盘,Linux添加裸设备空间(Redhat)
  8. Linux编程 文件操作,linux高级编程(文件操作)
  9. 告别遥控器,BBC 试验用大脑调台
  10. 数据结构--变长数组
  11. 哈哈哈,我来啦~~(纯灌水帖)
  12. 2021 年电工杯 A 题(第一题、第二题、第四题)
  13. matlab矩阵最大值最小值均值,Matlab 处理数据—最小值、最大值、均值、方差
  14. 书摘---创业36条军规4:如何组建公司
  15. 92.发光文字加载特效
  16. Vue 事件绑定与解绑
  17. n平方的求和公式_1到N的平方和,立方和公式是怎么推导的?
  18. Matlab使用Usrp进行数据收发
  19. 贝壳找房 OLAP 平台实践
  20. 苏宁智慧零售2018: 大象轻舞,一动千钧 | 一点财经

热门文章

  1. CCF 2018年题目题解 - Python
  2. 激光点云感知 voxnet本质
  3. C 语言链表其他实现
  4. CNN 卷积神经网络TensorFlow简单实现
  5. keras lstm 层理解
  6. DeepLab v2
  7. ntu part-time phd 信息整理
  8. 纯干货!文字识别在高德地图数据生产中的演进
  9. 从无到有算法养成篇-线性表实战篇
  10. Flink从入门到精通100篇(四)-基于 Flink 和 Drools 的实时日志处理