Redis进阶-Redis使用建议一二事
文章目录
- 命令使用
- 客户端使用
命令使用
【推荐】 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使用建议一二事相关推荐
- Redis进阶-Redis的惰性删除
文章目录 Pre del ------> unlink FLUSHDB/FLUSHALL --> FLUSHDB ASYNC/FLUSHALL ASYNC 异步队列 AOF Sync 扩展 ...
- Redis进阶-Redis集群 【高可用切换】【cluster-require-full-coverage】集群是否完整才能对外提供服务
文章目录 Pre 需求 :集群不完整仍然需要对外提供服务 验证 Redis Cluster 架构 高可用切换 Code访问测试 继续停掉8006 ,验证集群是否down掉 Pre Redis进阶-Re ...
- Redis进阶-Redis 4种MQ 方案对比
文章目录 Pre 方案1 Pub/Sub 优点 缺点 小结 方案2 List 优点 缺点 小结 方案3 ZSet 优点 缺点 小结 方案4 stream Pre 最终方案-----> Redis ...
- Redis进阶-Redis安全相关操作
文章目录 Pre port command lua script SSL proxy 小结 Pre 这里我们主要谈一下使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失,避免所在主机 ...
- Redis进阶-Redis缓存优化
文章目录 缓存穿透 定义 原因 缓存穿透问题解决方案 缓存空对象 布隆过滤器 缓存同时失效 缓存同时失效解决方案 缓存雪崩 缓存雪崩的解决方案 缓存击穿 ( 热点缓存key重建优化 ) 缓存击穿的解决 ...
- Redis进阶 - Redis主从工作原理详解
文章目录 主从配置 主从工作原理 全量复制 增量复制 主从复制风暴 主从配置 简要回顾一下,Redis的主从配置 复制一份redis.conf文件 将相关配置修改为如下值: port 6380pidf ...
- Redis进阶-Redis持久化原理
文章目录 Pre 快照原理 fork( 多进程) AOF 原理 AOF 重写 fsync 运维 Redis 4.0 混合持久化 Pre Redis-16Redis备份(持久化) Redis 的数据全部 ...
- Redis进阶-Redis对于过期键的三种清除策略
文章目录 Pre Redis Key的超时设置处理 被动删除 主动删除 当前已用内存超过maxmemory限定时,触发主动清理策略 总结 Pre Redis-17Redis内存回收策略 Redis K ...
- Redis进阶-Redis键值设计及BigKey问题
文章目录 键值设计 key设计 value设计 big key 定义 反例 bigkey的产生 如何优化bigkey 删除bigKey的注意事项 bigkey的危害 键值设计 key设计 (1)[建议 ...
最新文章
- 23.2 编写笨的程序
- ArtRage中文版
- CSS3的常用属性(一)
- html 左侧 树形菜单,vue左侧菜单,树形图递归实现代码
- 「基于模型的系统工程」的发展历程
- c# WebService添加SoapHeader认证
- linux给目录加裸设备磁盘,Linux添加裸设备空间(Redhat)
- Linux编程 文件操作,linux高级编程(文件操作)
- 告别遥控器,BBC 试验用大脑调台
- 数据结构--变长数组
- 哈哈哈,我来啦~~(纯灌水帖)
- 2021 年电工杯 A 题(第一题、第二题、第四题)
- matlab矩阵最大值最小值均值,Matlab 处理数据—最小值、最大值、均值、方差
- 书摘---创业36条军规4:如何组建公司
- 92.发光文字加载特效
- Vue 事件绑定与解绑
- n平方的求和公式_1到N的平方和,立方和公式是怎么推导的?
- Matlab使用Usrp进行数据收发
- 贝壳找房 OLAP 平台实践
- 苏宁智慧零售2018: 大象轻舞,一动千钧 | 一点财经