Redis
Jamin_Ye
最好不相见,如此便可不相恋。最好不相知,如此便可不相思。
展开
-
redis性能优化
#### 缓存设计1.缓存穿透 > 查询一个根本不存在的数据,缓存层没有,每次都要到存储层区查询,失去了缓存保护后端存储的意义- 解决方案: 缓存空对象并设置超时时间2. 缓存失效>一大批缓存同一时间失效导致大量请求穿透缓存直达数据库,造成数据库压力过大甚至挂掉- 解决方案: 将一次缓存过期时间设置为同一时间内不同时间,加个几秒的随机数3. 缓存雪崩==> redis服务宕机或超大并发导致缓存层无法支撑,全部打到存储层导致存储层调用过高存储层也宕机了- 使用高可用架构 如哨兵或原创 2020-08-04 23:22:15 · 239 阅读 · 0 评论 -
redis分布式锁
#### 部署在一个tomcat下模拟一个减库存的代码 这段代码请求少的话是没有问题的,但是在高并发的场景下就会出现问题@RequestMapping("redisTest")public String redisTest() { String key = "count"; //获取库存数量 int count = Integer.parseInt(stringRedisTemplate.opsForValue().get(key)); //有库存减少 if .原创 2020-08-02 10:57:09 · 77 阅读 · 0 评论 -
java连接redis
单机连接pom文件 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>java代码 // 连接池配置文件 JedisPoolConfig jedisPoolConfig = new Jedis原创 2020-08-01 13:29:05 · 132 阅读 · 0 评论 -
redis集群与哨兵选举原理
redis集群与哨兵选举原理Redis集群redis Cluster将所有数据分为16384个槽位,每个节点负责一部分,当客户端要查找某个key时,根据本地槽位分配信息进行定位槽位定位算法Cluster会对key进行crc16算法得到一个整数值,再对这个整数值进行16384取模得到具体槽位跳转重定向当客户端向一个错误的节点发出来指令,该节点会发现key所在槽位并不归自己管理,会向客户端发送一个特殊的跳转指令携带目标操作节点地址,客户端收到指令后会跳转到正确的节点上操作网络抖动正式的生产原创 2020-07-30 23:13:26 · 666 阅读 · 1 评论 -
Redis各架构安装与服务端使用
Redis各架构安装与服务端使用单机主从架构哨兵架构集群 单机安装确保本机已安装wget和gcc,如未安装执行yum install gcc wget -y下载redis.tar.gz 本次使用的redis版本为5.08wget http://download.redis.io/releases/redis-5.0.8.tar.gz解压包到/usr/local/下tar -zxvf redis-5.0.8.tar.gz -C /usr/local/编译cd /usr/local/re原创 2020-07-29 23:48:46 · 137 阅读 · 0 评论 -
Redis基本数据类型与持久化
数据类型String单值缓存 set user:1 json数据多值缓存 mset user:1:name zhangsan user:1:age 18分布式锁 setnx key value 返回0或1 防止其他人修改删除数据 del key value计数器 incr article:readCount 999 增长 获取阅读数get article:readCountweb集群 session共享 spring session +redis实现session共享分布式系原创 2020-07-27 23:02:11 · 89 阅读 · 0 评论