摘要:一、热点数据的存放 场景: 数据库中有2000w数据,而redis中只有100w数据,如何保证redis中存放的都是热点数据? 方案:限定redis占用的内存,redis会根据自身数据淘汰策略,留下热数据到内存。所以可以计算100w数据大约占用的内存, 然后设置一下redis内存限制即可,并将淘汰策
阅读全文
摘要:这是删除后,过了一两天就增长到了4万多条数据了。 查看了RedisTokenStore 发现token 会不断地往list塞值。 public void storeAccessToken(OAuth2AccessToken token, OAuth2Authentication authentica
阅读全文
摘要:转载于http://www.seiang.com/?p=301 一、什么是慢查询日志? slow log是Redis用来记录查询执行时间超过给定时长的命令请求的日志系统。许多数据库(如:MySQL)提供慢查询日志帮助开发与运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令
阅读全文
摘要:一、数据结构与算法——跳表 什么是跳表 跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图)。一开始时,算法在最稀疏的层次进行搜
阅读全文
摘要:概述 Jedis是Redis官方推荐的Java客户端,更多Redis的客户端可以参考Redis官网客户端列表。Redis-Sentinel作为官方推荐的HA解决方案,Jedis也在客户端角度实现了对Sentinel的支持,主要实现在JedisSentinelPool.java这个类中,下文会分析这个
阅读全文
摘要:一、相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <
阅读全文
摘要:一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 二、缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请
阅读全文
摘要:实现Redis的分布式锁,除了自己基于redis client原生api来实现之外,还可以使用开源框架:Redission,Redisson是一个企业级的开源Redis Client,也提供了分布式锁的支持。 一、Redisson原理分析 (1)加锁机制 线程去获取锁,获取成功: 执行lua脚本,保
阅读全文
摘要:概述 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。 为什么要使用分布式锁 成员变量 A 存在 JVM1、JVM2、JVM3 三个 JVM 内存中 成员变量 A 同时都会在 JVM 分配一块内存,三个请求
阅读全文
摘要:一、简介 redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本; redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点; redis集群是没有统一
阅读全文
摘要:一、Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 (1) string类型是Redis最基本的数据类型,一个键最大能存储512MB。可以包含任何数据。比如jpg图片或者序列化的对象 。 操作命令
阅读全文