一、xml文件中添加依赖
<!--spring boot及其他依赖根据需要进行导入-->
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二、使用Java存储redis数据
创建redis操作对象
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
string字符串类型
// 存储string字符串类型数据到Redis中
redisTemplate.opsForValue().set("name", "zhangsan"); // 存储string类型数据
// 从Redis中获取字符串类型数据
Object name = redisTemplate.opsForValue().get("name"); // 获取string类型数据
System.out.println(name);
// 使用boundValueOps()方法,存储字符串类型数据到Redis中
redisTemplate.boundValueOps("name").set("lisi");
// 使用boundValueOps()方法,从Redis中获取字符串类型数据
Object name1 = redisTemplate.boundValueOps("name").get();
System.out.println(name1);
hash类型
// 向Redis的Hash数据结构中存储键值对,键为"user",字段为"name",值为"xiaomi"
redisTemplate.opsForHash().put("user", "name", "xiaomi");
// 向Redis的Hash数据结构中存储键值对,键为"user",字段为"age",值为"10"
redisTemplate.opsForHash().put("user", "age", "10");
// 从Redis的Hash数据结构中获取"user"键中字段为"name"的值
Object name = redisTemplate.opsForHash().get("user", "name");
System.out.println(name);
// 从Redis的Hash数据结构中获取"user"键中多个字段的值,字段包括"name"和"age"
List<Object> objects = redisTemplate.opsForHash().multiGet("user", Arrays.asList("name", "age"));
objects.forEach(System.out::println);
list类型
// 使用leftPush()方法向Redis的List数据结构左侧插入元素,列表键为"mylist",值为"苹果"
redisTemplate.opsForList().leftPush("mylist", "苹果");
// 使用leftPush()方法向Redis的List数据结构左侧插入元素,列表键为"mylist",值为"安卓"
redisTemplate.opsForList().leftPush("mylist", "安卓");
// 使用rightPush()方法向Redis的List数据结构右侧插入元素,列表键为"mylist",值为"微软"
redisTemplate.opsForList().rightPush("mylist", "微软");
// 使用rightPush()方法向Redis的List数据结构右侧插入元素,列表键为"mylist",值为"ios"
redisTemplate.opsForList().rightPush("mylist", "ios");
// 使用range()方法从Redis的List数据结构中获取范围内的元素,列表键为"mylist",范围从0到-1表示获取全部元素
List<Object> mylist = redisTemplate.opsForList().range("mylist", 0, -1);
mylist.forEach(System.out::println);
set类型
// 使用add()方法向Redis的Set数据结构中添加元素,集合键为"myset",值为"悟空"、"八戒"、"悟净"、"唐僧"
redisTemplate.opsForSet().add("myset", "悟空", "八戒", "悟净", "唐僧");
// 使用members()方法从Redis的Set数据结构中获取所有成员,集合键为"myset"
Set<Object> myset = redisTemplate.opsForSet().members("myset");
myset.forEach(System.out::println);
zset类型
// 使用add()方法向Redis的ZSet有序集合中添加元素,集合键为"myzset",值为"西游记",分数为60
redisTemplate.opsForZSet().add("myzset", "西游记", 60);
// 使用add()方法向Redis的ZSet有序集合中添加元素,集合键为"myzset",值为"水浒传",分数为61
redisTemplate.opsForZSet().add("myzset", "水浒传", 61);
// 使用add()方法向Redis的ZSet有序集合中添加元素,集合键为"myzset",值为"三国演义",分数为59
redisTemplate.opsForZSet().add("myzset", "三国演义", 59);
// 使用add()方法向Redis的ZSet有序集合中添加元素,集合键为"myzset",值为"红楼梦",分数为51
redisTemplate.opsForZSet().add("myzset", "红楼梦", 51);
// 使用range()方法从Redis的ZSet有序集合中获取范围内的元素,集合键为"myzset",范围从0到-1表示获取全部元素
Set<Object> myzset = redisTemplate.opsForZSet().range("myzset", 0, -1);
myzset.forEach(System.out::println);
三、使用redis缓存实现查询数据从缓存中查询
/**
* 使用redis查询用户年龄在23-28
* @param min
* @param max
* @return
*/
@Override
public List<User> findByAge(int min, int max) {
//先从缓存中读取数据
String userList = redisTemplate.opsForValue().get("UserList");
if (userList!=null){
//是缓存中读取的数据
System.out.println("是缓存中读取的数据");
//转成json数据返回
List<User> users = JSONObject.parseArray(userList, User.class);
return users;
}else {
//缓存中没有
System.out.println("数据库中查到的数据");
List<User> userList1 = userMapper.findByAge(min,max);
//装成json字符串存入redis
userList = JSONObject.toJSONString(userList1);
redisTemplate.opsForValue().set("UserList",userList);
return userList1;
}
}
/**
* 修改方法
* @param age
*/
@Override
public void updateByAge(int age) {
userMapper.updateByAge(age);
//缓存中删除数据
Boolean userList = redisTemplate.delete("UserList");
}