boot用redisTemplate,方便操作,分布式锁一般都是用redisson,解决了加锁和时间的原子性、删锁的误操作、自动续锁等。
2、如何和springboot整合引入spring-boot-starter-data-redis
3、如何配置连接池?首先考虑有没有必要。单机redis可支撑8万qps。就是说从redis客户端连接,发送命令,返回数据。时间如果是1毫秒也算是比较耗时了。1毫秒的qps也能达到1000。
连接太多需要维护,并不是越多越好。和服务器的核心也有关系。
springboot2.0之后默认使用的是lettuce的连接池。使用了共享本地连接参数控制是否开启shareNativeConnection。如果要开启连接池,需要配置该参数。否则会不生效,一直用的是一个连接。
另外需要引入架包。
4、项目使用场景org.apache.commons commons-pool2
说几个不常用的:spring中利用几个注解 @Cacheable @cachePut @CacheEvict在controller和service层中间加一层缓存层,然后利用cacheManager的配置,对所有的需要缓存的数据做统一管理。
cacheManage可以利用redis实现。
5、redisTemplate源码简析
模板模式实现:每个redis操作都需要进行连接、执行语句、销毁。这种重复的操作,springboot采用模板方法实现。具体的实现思路是:redisTemplate定义了excute方法,方法里面定义了这一套连接、执行语句、销毁标准流程。
那么如何实现对不同的数据类型操作?
采用回调的方式。
需要传参进excute方法,其中一个参数就是回调方法,方法里面定义了具体的操作redis的方法。
另外redisTemplate方式对redis每一种数据结构都定义了对应的xxxxxOperation类。
将redisTemplate作为参数传入xxxxOperation。参看下面 ↓↓↓
实际运用的时候,代码里一般是使用redisTemplate.opsForValue/opsForHash。。。获取到具体的数据结构(hash ,set,string,list),然后执行对应的操作方法(其实是调用redisTemplate的excute方法,只需要传入对应的回调即可)。



