![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
zmc@
please once again
展开
-
一致性hash算法
1.为什么需要一致性hash算法?如下场景:redis集群按槽分配数据(类似于数据库的分库分表)打进redis的数据可能分配到任何一个redis的节点上,如果没有一个固定的策略,那么需要遍历这个redis集群才能命中想要的数据-------->所以需要有一个策略来避免(分库分表规则:按照Hash值、取模、按照类别、按照某一个字段值等规则),这里按照hash来说明。按照hash:一个资源通过hash算法可以路由到某个节点,如果hash(资源1) % 4 = 2,那么查询资源1的时候.转载 2020-05-30 17:57:07 · 206 阅读 · 1 评论 -
高并发代码设计(redis)-暂时把redis当作数据库使用
1.没有并发的场景@RequestMapping("/test") public String deductStock() throws InterruptedException { int stock = Integer.parseInt(stringRedisTemplate.opsForValue().get("stock")); if(stoc...原创 2019-08-07 20:23:19 · 483 阅读 · 0 评论 -
重点-(测试通过)-redis实践
重点是注释的部分:使用redis:package com.fangdd.esf.web.server.service.impl;import com.fangdd.esf.customercommon.protocol.Entity.search.house.HouseFilterRequest;import com.fangdd.esf.customercommon.pro...原创 2019-01-08 10:53:02 · 202 阅读 · 0 评论 -
redis实践demo(序列化与反序列化)
1.导入依赖2.redisconfig编写2.1 cacheManager@SuppressWarnings("rawtypes") @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new Re...原创 2018-12-29 15:52:17 · 698 阅读 · 0 评论 -
redis中AOF和RDB的关闭方法
问题:当往redis中导入数据时,有时会出现redis server went away的情况;原因: 导入的数据量太大,而内存不够(即内存1G,但数据有2G)。此时的redis服务需要重启。 可能是同一时间导入的数据太多,导致数据持久化的操作出问题,此时需要关闭rdb跟aof。 *关闭rdb的命令:config set save ""(或者进入配置文件将:Save...原创 2018-09-11 15:00:34 · 26429 阅读 · 3 评论 -
redis的安装与启动(Windows)
下载地址:https://github.com/MSOpenTech/redis/releases。Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。思路:redis解压之后即可使用,放到自己指定的路径(结构看起来有点奇怪,没有bin文件)本文直接放在:...原创 2018-08-23 16:15:04 · 308 阅读 · 0 评论 -
Redis的内存淘汰策略
Redis的内存淘汰策略是指在Redis用于缓存的内存不足时(或者说达到设置的最大值时),处理需要新写入且需要申请额外空间的数据的方法。 通过Maxmemory指令配置Redis的数据集使用指定量的内存,比如:配置 maxmemory 500Mb。 当设置maxmemory为0,则表示无限制(若为64位系统则默认无限制,若为32位系统,则使用3GB作为极限)。 当...转载 2018-08-08 14:49:49 · 588 阅读 · 0 评论 -
redis过期策略
我们使用redis的时候一般会设置过期时间; redis设置过期时间: expire 只针对顶级key有效,即哈希结构不支持过期(value为hash结构的时候,不能对hash中的某一部分进行过期设置); expire key time(以秒为单位)--这是最常用的方式; setex(String key, int seconds, String v...原创 2018-08-08 14:32:32 · 212 阅读 · 0 评论 -
redis-cluster及其主从复制---理顺整体思路
redis cluster是redis的集群,由于容量的限制,通过集群的方式可以优化,redis集群预分配有16384额槽,将不同的槽分配到不同的节点(机器)上,当需要加入一个key时,可以通过hash算法进行计算,算出具体的槽位,再确定该槽在哪个机器上,即可将插入的key存到机器上,通过hash的方式也达到了负载均衡; 注意:集群中的每个节点的数据都是不一样的,诶个节点只...原创 2018-08-15 11:13:12 · 307 阅读 · 0 评论 -
redisCluster中模糊获取key
在一个集群中,显然不能通过keys方法通过pattern直接获取key的集合;鉴于这种问题,产生了两种思路,如下:方案1:已知相同的tag的KV会在一个节点上,所以只要key带有相同的hashtag,则会在一个节点上,所以只要扫描该节点即可,这样就将集群转化为了单点。 @RequestMapping(value = "/ceshi", method = RequestMethod.GET...原创 2018-08-03 09:56:42 · 7012 阅读 · 2 评论 -
redis持久化(RDB、AOF)
redis是内存数据库,但是不仅限于内存,redis有其持久化的方式;共有三种持久化的方式;方式1:生成dump.rdb文件方式2:生成appendonly.aof文件方式3:master/slave(主从复制读写分离)RDB:(redis database)简介: 通俗来说,rdb是在指定的时间间隔内将内存中的数据集快照写入磁盘,即snapshot快照,想要...原创 2018-08-14 14:16:16 · 193 阅读 · 0 评论 -
redis整理与设置过期时间问题
一:redis数据类型简介redis有五种数据类型,分别是String,Hash,List,set,zset。String:二进制安全的(可包含任何数据,如jpg图片或者序列化对象,value最大为512m);hash:类似于Java中的hashmap;List:链表类型;arraylist?linkedlist?set:底层是hashmap(无序,无重复);Zset:游戏...原创 2018-08-06 10:20:59 · 13829 阅读 · 0 评论 -
更新数据时,是先删除缓存再更新DB,还是先更新DB再删除缓存?
当数据出现变化的时候,DB和redis的一致性就显得非常重要!结论:并发的情况下,主要是看场景,和代价,进行选择。目前有两种(基本思路)策略:1.先删除缓存再更新DB结论:产生脏数据的概率较大(若出现脏数据,则意味着再不更新的情况下,查询得到的数据均为旧的数据)比如:两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到...原创 2018-08-09 10:26:52 · 16544 阅读 · 4 评论