
缓存
我咋这么优秀呢
这个作者很懒,什么都没留下…
展开
-
Redis杂谈
Redis杂谈Redis简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数...原创 2019-09-12 12:51:20 · 121 阅读 · 0 评论 -
使用Redis实现消息队列
使用Redis实现消息队列消息队列什么是消息队列?消息队列就是一个保存消息的容器,它具有先进先出的特性为什么会出现消息队列?异步:场景的B/S架构下,客户端向服务器发送请求,但是服务器处理这个消息需要花费很长的时间,如果客户端一直等到服务器处理完消息,会造成客户端的系统资源浪费;而使用消息队列后,服务器直接将消息推送到消息队列中,由专门的处理消息程序处理消息,这样客户端就不必花费大...原创 2019-12-03 15:41:48 · 218 阅读 · 0 评论 -
Redis底层数据结构
Redis底层数据类型Redis中有五种数据结构,但他们的底层实现都不是唯一的,所以怎样选择对应的底层数据支撑呢?这就需要“多态”的思想,但是因为redis是C开发的。所以通过结构体来模仿对象的“多态”为了完成这个任务,redis这样设计redisObject对象基于redisObject对象的类型检查基于redisObject对象的显示多态函数对redisObject进行分配、共享和销毁的机制底层数据结构简单动态字符串sdsredis的字符串表示为sds,而不是C字符串(原创 2020-08-18 19:04:07 · 162 阅读 · 1 评论 -
Redis事务分析及事务失败的处理
# Redis事务分析及事务失败的处理## Redis事务Redis事务可以一次执行多个命令,并且可以有三个特点:批量操作在发送EXEC命令前被放入队列缓存收到EXEC命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中实例:以下是一个事务的例子,它先以MULTI开始一个事务,然后将多个命令入...原创 2019-09-16 09:46:55 · 1218 阅读 · 1 评论 -
缓存相关概念&解决方案
缓存缓存穿透(缓存击穿)定义缓存击穿就是指用户查询数据,在数据库中没有,自然在缓存汇中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空。这样就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。解决方案布隆过滤器将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的原创 2020-07-15 11:30:43 · 198 阅读 · 0 评论 -
EhCache
EhCache我看到maven仓库上有两个EhCache,一个org,一个net,如下所示 <!-- https://mvnrepository.com/artifact/org.ehcache/ehcache --> <dependency> <groupId>org.ehcache</groupId> ...原创 2019-09-26 13:41:37 · 311 阅读 · 0 评论 -
Ehcache、Memcache、Redis三大缓存比较
Ehcache、Memcache、Redis三大缓存比较Ehcache、Memcache、Redis三大缓存比较原创 2019-09-26 13:42:38 · 333 阅读 · 0 评论 -
Caffeine
CaffeineCaffeine简介Caffeine 是基于Java 8的高性能,接近最佳的缓存库。 Caffeine使用Google Guava的API提供内存缓存。在Caffeine中分为两种缓存,一个是有界缓存,一个是无界缓存,无界缓存不需要过期并且没有界限。 //下面创建的是无界缓存 Cache<String,String> cache = Caffe...原创 2019-09-29 16:51:02 · 4870 阅读 · 1 评论 -
使用JMH实际测试EhCache、GuavaCache和Caffeine之间的性能
使用JMH实际测试EhCache、GuavaCache和Caffeine之间的性能测试代码EhCache@BenchmarkMode({Mode.AverageTime})@OutputTimeUnit(TimeUnit.MICROSECONDS)@Warmup(iterations=3, time = 5, timeUnit = TimeUnit.MILLISECONDS)@Me...原创 2019-10-11 14:08:43 · 1115 阅读 · 0 评论