
缓存
光与热
这个作者很懒,什么都没留下…
展开
-
多线程redis抛出异常B cannot be cast to java.lang.Long
Exception in thread “pool-1-thread-5” java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:222) at redis.clients原创 2017-08-16 11:15:36 · 8686 阅读 · 2 评论 -
分布式锁之Redis缓存锁
1.Redis分布式锁用Redis来实现分布式锁最简单的方式是在实例里创建一个键值,创建出来的键值有一个超时时间,所以每个锁最终会被释放,当一个客户端想要释放锁时候,客户端只要删除这个键值就可以。利用redis脚本编写申请和释放锁代码比利用WATCH/MULTI/EXEC编写的代码更加简洁,减少了业务服务器客户服务器之间的交互,在高并发情况下redis脚本编写代码比WATCH/MULTI/EXEC性原创 2017-11-26 15:17:34 · 4599 阅读 · 0 评论 -
redis长时间失去响应
今天遇到一个redis失去响应的问题,redis运行一段时间后就失去响应,控制台没有报任何错误。一开始以为是jedis的什么bug,调试了半个多小时后找到了问题的原因 public Long addToSeckillQueue(long seckillId,Long phone,Long currentTime){ Long result = 0L; try {原创 2017-11-12 15:26:15 · 4272 阅读 · 0 评论 -
Windows下lua+redis调试环境搭建
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定。 1、下载ZeroBraneStudio,我下载的是破解版(我自己为自己感到可耻,其实并不贵,百十来块钱的样子) 解压后在bin下有lua解释器的路径,把该路径添加到环境变量中:假设解释器路径是:D:/ZeroBraneStudio/bi转载 2017-11-08 20:11:04 · 3959 阅读 · 1 评论 -
使用lua脚本编写访问次数限制
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。使用脚本的好处如下:1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复转载 2017-08-22 07:55:09 · 4131 阅读 · 0 评论 -
redis进阶
关键字:Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍 Tags: redis, jedis, 事务, 管道, 分布式, 连接池 redis是一个著名的key-value存储系统,而作为其官方推荐的java版客户端jedis也非常强大和稳定,支持事务、管道及有jedis自身实现的分布式。 在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比:转载 2017-08-20 16:10:53 · 349 阅读 · 0 评论 -
redis实战之计数信号量(未完)
计数信号量是一种锁,可以让用户限制一项资源最多能够同时被多少个用户访问 计数信号量有如下几个特征: 1. 使用前必须要获取到资源,使用结束后必须要释放资源 2. 获取资源失败后立即将失败结果返回给用户示例:构建基本的计数信号量使用有序集合来构建基本的计数信号量,使用当前时间戳作为分值,将标识值添加到有序集合里面,程序在将标识符添加到有序集合前,清理有序集合中时间戳大于超时数值的标识符pub原创 2017-08-12 11:16:30 · 2541 阅读 · 1 评论 -
Redis之锁
WATCH命令的性能问题WATCH命令在更新数据之前会监视要操作的键,如果提交数据前检测到目标键已经被更新过,那么会放弃更新数据,并且重新尝试重新执行上述的操作。如果在并发量大的情况下,系统完成一次更新操作尝试的数目会非常多,用户等待的时间也会变长,所以WATCH,MULTI,EXEC组成的事务不具备可扩展性,所以我们使锁来解决这一问题redis锁锁虽然可以解决上述的问题,但是构建正确的锁并不那么容原创 2017-08-12 09:25:26 · 2418 阅读 · 1 评论 -
spring-data-redis用配置类连接时,抛异常Cannot get Jedis connection; nested exception is java.lang.NullPointerE
前提:Redis服务器已经运行,且端口号,服务器地址都已经配置正常,但任然抛出无法获取连接异常原来的代码如下:[java] view plain copy print?@Bean public JedisConnectionFactory connectionFactory(){ JedisConnectionFactory jedisConnectionFactory =转载 2017-07-27 19:32:20 · 8408 阅读 · 0 评论 -
Redis之LRU-Cache
LRU(Least Recently Used)最近最少使用算法是众多置换算法中的一种。 Redis中有一个maxmemory概念,主要是为了将使用的内存限定在一个固定的大小。Redis用到的LRU 算法,是一种近似的LRU算法。1 设置maxmemory上面已经说过maxmemory是为了限定Redis最大内存使用量。有多种方法设定它的大小。其中一种方法是通过CONFIG SET设定,如下:1转载 2017-11-27 14:11:20 · 763 阅读 · 0 评论