Redis的java客户端
Jedis、Lettuce、Redisson、以及spring提供的spring data redis
Jedis操作redis
//添加依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
**使用步骤:
1.获取连接
Jedis jedis=new Jedis("ip地址",端口号(默认6379))
2.执行操作
方法和redis-client.exe的方法一样,只需通过jedis.方法调用,具体的方法见redis入门2
3.关闭连接**
jedis.close();
Spring Data Redis操作redis
//添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
redis启动的时候,默认配置了16个库,默认情况下是在第0个库进行操作,在redis上操作的话,换库用select 编号
spring data redis中提供了一个高度封装的类:RedisTemplate,针对该类设置了众多的接口,用于操作redis中的集中基本数据类型
针对不同数据生成的对象
redisTemplate.opsForValue() 普通字符串
redisTemplate.opsForHash() 针对map类型
redisTemplate.opsForList()针对list类型
redisTemplate.opsForSet()针对set类型
redisTemplate.opsForZSet()针对zset类型
使用步骤
1.加载依赖文件
2.设置redis配置文件
3.定义配置类,修改RedisTemplate序列化方式–RedisTemplate默认情况会对key进行序列化
4.注入RedisTemplate对象,调用方法即可
五种数据的通用命令
redisTemplate.keys("*")//查询所有
redisTemplate.hasKey("itcast")//查询某个键
redisTemplate.delete("mysit")//删除某个key
redisTemplate.type("myset")//获取对应value的属性
Redis缓存
针对经常访问的数据,可以存放在redis中,减少数据库的压力
1.首先需要给数据定义key,键名可以自定义,但是需要规范化,便于后续操作
List<DishDto> dishDtoList=null;//封装对象的集合,该集合的值用于给redis的value赋值
String key="dish_"+dish.getCategoryId()+"_"+dish.getStatus();//给key起名
2.判断键所对应的值是否存在,存在的情况下可以直接获取
redisTemplate.opsForValue().get(key);//返回值是Object
dishDtoList= (List<DishDto>)redisTemplate.opsForValue().get(key)//将结果对象封装后存放在对应key的value中
3.如果判断查询结果不存在,则执行sql查询后,将对象封装后再赋值给redis
redisTemplate.opsForValue().set(key,dishDtoList,60, TimeUnit.MINUTES);//键名/封装的对象集合/有效时间60分钟
4.当数据表有新增操作或者修改操作的时候,必须清除对应的缓存信息
清除信息可以选择清除所有,或者清除指定的缓存信息
1.在对应的controller方法中注入 @RedisTemplate redis
2.根据key命名的格式,如键名为flower+name
,删除所有的缓存redis.delete("kind*")
,想要删除具体的某个缓存的话,只需要将方法参数中的对象的对应属性查出,根据命名的规则拼接即可,如redis.delete("flowermeigui")