redisson
Redisson是架设在Redis基础上的一个Java驻内存数据网格
Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。
SpringBoot羡慕:
第一步:引入启动器:
版本因为做了统一管理,所以写在了properties标签里面了,也可以写在上面version里面
第二步:配置yml/properties文件:
主要配置rdies的ip,端口号,连接密码,对应的数据库,redis默认有16个数据库,这里database:0就是使用第一个数据库
第三步,在项目的resources目录下添加redisson的配置文件,文件名自定义,能对应上即可。
比较全的参数配置连接:https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95
这里只列举项目里面用过的
第五步,引入redissonClient到需要用到地方即可使用
目前所使用到的技术:
1.存储缓存数据
1.1单一存储某个数据,一个key对应一个value
获取装数据的桶,根据key来取值,取出一个Bucket(桶,意思应该是装了东西的东西,所以使用该英文单词)
这里KEY,使用了常量加冒号再加具体的key,如下图,
这样做的原因是因为冒号在redis中可以成为一个命名空间,变成如下图所示:
这样做同一类的数据就可以显示在同一个命名空间下面,既美观又方面查找,这里使用的是Redis Desktop Manager软件
存数据,可以判断userDetailsBucket是否为空,如果为空,可以向桶里面存数据,并设置缓存的时长
——判断桶有无数据
——存储数据到桶中
真正取数据:
——从桶里面取出数据
删除数据,直接调用桶的方法delete既可以:
1.2存储map数据:
取数据,根据key直接获取一个map缓存数据
存数据,也是直接调用同一个方法,只需要再使用fastPut即可将数据存储进缓存中,也可以做刷新数据使用
在Redis Desktop Manager中,可以看到存进去的数据为这样:
删除数据,直接调用delete()方法既可以:
1.3存储list数据:
根据一个key直接获取一个Rlist集合
这个Rlist可以判断是否为空
也可以向普通的list一样添加数据,添加数据后,就会自动添加到缓存数据中
最后还可以设置存活时间:
当真正需要获取缓存里面的数据的时候,只需要调取readAll方法即可
2.使用锁
简单的操作就是:1.获取锁资源,2.使用锁,3.解锁
RLock lock = redissonClient.getLock(ORDER_LOCK_TAG + orderDTO.getUserId()); try { lock.lock(); //业务逻辑 } finally { lock.unlock(); }
暂时项目中使用到的技术为以上内容,之后待遇到深入学习补充