昨天学习了Redis的相关知识,今天用代码写写相关案例。
首先是Jedis这个API,jedis集成了Redis的一些命令,用redis可以操作Redis数据库,首先要添加jedis的依赖
直接调用jedis的api完成对Redis单机版的操作:
由于直接调用效率会很低,就和jdbc操作数据库一样,频繁的连接关闭,造成性能的降低,所以可以使用连接池jedispool:
jedis也可以对Redis集群进行操作,使用jedisCluster:
通过spring整合jedis:
操作单机版:创建工程,添加spring和jedis的坐标:
写几个简单的接口:
创建单机版的接口实现类:
配置文件applicationContext-Jedis.xml:
扫描bean对象jedispool的配置配置bean配置jedispool的bean测试单机版:
操作redis集群:
创建jediscluster的实现类:
在配置文件中添加整合:
配置集群的bean(1):
配置集群bean(2):
(3):
测试集群版:
Redis管理工具的使用:直接使用命令操作Redis很不方便,所以使用一个管理工具Redis desktop manager:下载之后安装,运行:
点击连接输入连接名,ip和监听端口,然后测试连接,点击ok:
crud小案例:在之前做过的dubbo中对user表操作的基础上加入查询缓存,这次直接把所有层放在一个工程下,不做分布开发便于操作,在pom中添加依赖,需要什么加什么
项目的大致结构如下:
由于是将一个对象放到Redis中,所以使用了JsonUtil工具类,直接将传入或者返回的对象转为json格式,然后存入redis中,为了便于区分对象,所以用一个resources.properties文件放入存入redis的对象的前缀,加入对象id拼接成存入redis的key。
resources.properties使用注解获得该前缀的值由于只在查询操作中使用redis,所以在查询的业务逻辑中加入如下代码:
先查询redis中是否有该对象,没有的话就执行从MySQL查询,查到之后放入redis之中,这样下次查询就直接从redis中查,为了不影响其他业务逻辑的正常执行,凡是涉及到redis操作的代码都放入到try-catch代码块中。
为了使redis查询缓存数据同步,所以在修改和删除操作中也要对redis进行修改和删除操作:
在修改操作中将修改后的对象重新存入redis中,由于key值之前已经存在,所以这次直接修改redis中的value为修改后的value,删除数据之后在redis中也将该条数据删除今天学习redis相关的大致就是这些,运行结果什么的就不放了,明天学solr。