Jedis
以Redis命令作为方法名称,学习成本低,简单实用。但是Jedi s实例是线程不安全的,多线程环境下需要基于连接池来使用
lettuce(Spring默认使用)
Lettuce是基于Netty实现的,支持同步、异步和响应式编程方式,并且是线程安全的。支持Redis的哨兵模式、集群模式和管道模式。
Rediss服务器托管网ion
Redisson是一个基于Redi s实现的分布式、可伸缩的Java数据结构集合。包含了诸如Map、Queue、Lock、Semaphore、Atomi cLong等强大功能。
Jedis使用的基本步骤:
1.引入依赖
2.创建Jedis对象,建立连接
3.使用Jedis, 方法名与Redis命令一致
4.释放资源
Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。
SpringDataRedis
SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址: https://spring.io/ projects/spring-data-redis
●提供了对不同Redis客户端的整合(Lettuce和Jedis )
●提供了RedisTemplate统一API来操作Redis
●支持Redis的发 布订阅模型
●支持Redis哨兵和Redis集群
●支持基于Lettuce的响 应式编程
●支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化
●支持基于Redis的jDKCollection实现
序列化
RedisTemplate可以接收任意0bject作为值写入Redis,只不过写入前会把Object序列化为字节形式,默认是采用JDK
序列化,得到的结果是这样的:
缺点:
●可读性差
●内存占用较大
StringRedisTemplate
尽管JSON的序列化方式可以满足我们的需求,但依然存在一些问题, 如图:
为了在反序列化时知道对象的类型,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。
为了节省内存空间,我们并不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当需要存储Java对象时,手动完成对象的序列化和反序列化。
RedisTemplate的两种序列化实践方案:
方案一:
1. 自定义RedisTemplate
2.修改RedisTemplate服务器托管网的序列化器为GenericJackson2JsonRedisSerializer
方案二:
1. 使用StringRedisTemplate
2.写入Redis时,手动把对象序列化为JSON
3.读取Redis时,手动把读取到的JSON反序列化为对象
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
为什么HR人力资源管理部被认为是没有价值、打杂的、背锅侠、铲屎官的部门? 接下来,我们聊聊HR地位低的原因。 一、管理层认知 大多数公司的管理层,尤其是中小公司,管理层不会虚心倾听HR的建议,认为HR没有资格去评判,也不相信HR反馈的市场信息。实际上,管理层的…