欢迎访问上玄的博客
一个人可以被毁灭,但不能被打败。
【笔记】Redis介绍和Java的整合

【笔记】Redis介绍和Java的整合

redis模板的调用实例代码package com.sky.test; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.connection.DataType; import org.springframework.data.redis.core.*; import javax.annotation.Resource; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; /** * Redis测试类 * @author 上玄 * @since 2025-03-21 */ @SpringBootTest public class SpringDataRedisTest { @Resource private RedisTemplate redisTemplate; @Test public void testRedisTemplate(){ System.out.println(redisTemplate); // 获取RedisTemplate的子类对象 ValueOperations ops = redisTemplate.opsForValue(); HashOperations hashOps = redisTemplate.opsForHash(); ListOperations listOps = redisTemplate.opsForList(); SetOperations setOps = redisTemplate.opsForSet(); ZSetOperations zSetOps = redisTemplate.opsForZSet(); } /** * 操作字符串 */ @Test public void testString(){ // set get redisTemplate.opsForValue().set("name","张三"); String name = (String) redisTemplate.opsForValue().get("name"); System.out.println(name); // setex: 设置键值对并指定过期时间 redisTemplate.opsForValue().set("city","北京",3, TimeUnit.MINUTES); // setnx: 设置键值对,如果键不存在则成功,否则失败 // 相当于:if not exists name then set name value Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("name", "李四"); System.out.println(aBoolean); } /** * 操作哈希类型 */ @Test public void testHash(){ // hset hget : 设置和获取哈希表中的字段值 HashOperations hashOperations = redisTemplate.opsForHash(); hashOperations.put("user1", "name", "张三"); hashOperations.put("user1", "age", "25"); String name = (String) hashOperations.get("user1", "name"); System.out.println(name); // hasKey: 检查哈希表中是否存在指定的字段 Boolean b = hashOperations.hasKey("user1", "age"); System.out.println(b); // hkeys命令:获取哈希表中所有的字段名 Set user1 = hashOperations.keys("user1"); System.out.println(user1); // hvals命令:获取哈希表中所有的字段值 List user11 = hashOperations.values("user1"); System.out.println(user11); // hdel : 删除哈希表中的一个或多个字段 Long delete = hashOperations.delete("user1", "age"); System.out.println(delete); Boolean b1 = hashOperations.hasKey("user1", "age"); System.out.println(b1); } /** * 操作列表类型 */ @Test public void testList(){ // lpush rpush : 在列表的左侧或右侧插入一个或多个值 ListOperations listOperations = redisTemplate.opsForList(); // lpushAll : 在列表的左侧插入多个值 listOperations.leftPushAll("mylist", "a", "b", "c"); // lpush : 在列表的左侧插入一个值 listOperations.leftPush("mylist", "d"); // lrange : 获取列表中指定范围内的元素 List mylist = listOperations.range("mylist", 0, -1); System.out.println("mylist: " + mylist); // llen : 获取列表的长度 Long length = listOperations.size("mylist"); System.out.println("长度:" + length); // rpop : 移除并返回列表的最后一个元素 String rightPop = (String) listOperations.rightPop("mylist"); System.out.println("rightPop: " + rightPop); // lrem : 从列表中删除指定数量和值相同的元素 Long remove = listOperations.remove("mylist", 1, "b"); System.out.println("remove: " + remove); // ltrim : 截取列表 listOperations.trim("mylist", 0, 1); mylist = listOperations.range("mylist", 0, -1); System.out.println("截取后:" + mylist); } /** * 操作集合类型 */ @Test public void testSet() { SetOperations setOperations = redisTemplate.opsForSet(); // sadd : 添加元素到集合中 setOperations.add("myset1", "a", "b", "c", "d"); setOperations.add("myset2", "a", "b", "x", "y", "z"); // smembers : 获取集合中的所有元素 Set myset1 = setOperations.members("myset1"); System.out.println("myset1: " + myset1); Set myset2 = setOperations.members("myset2"); System.out.println("myset2: " + myset2); // sismember : 判断元素是否在集合中 Boolean isMember = setOperations.isMember("myset1", "a"); System.out.println("isMember: " + isMember); // sdiff : 获取两个集合的差集 Set diff = setOperations.difference("myset1", "myset2"); System.out.println("差集:" + diff); // sinter : 获取两个集合的交集 Set intersect = setOperations.intersect("myset1", "myset2"); System.out.println("交集:" + intersect); // sunion : 获取两个集合的并集 Set union = setOperations.union("myset1", "myset2"); System.out.println("并集:" + union); // smove : 将元素从一个集合移动到另一个集合 Boolean move = setOperations.move("myset1", "myset2", "a"); System.out.println("move: " + move); // scard : 获取集合的元素数量 Long size = setOperations.size("myset1"); System.out.println("size: " + size); // srem : 从集合中删除元素 Long remove = setOperations.remove("myset1", "a", "b"); System.out.println("remove: " + remove); } /** * 操作有序集合类型 */ @Test public void testZSet() { ZSetOperations zSetOperations = redisTemplate.opsForZSet(); // zadd : 添加元素到有序集合中 zSetOperations.add("myzset", "a", 1); zSetOperations.add("myzset", "b", 2); zSetOperations.add("myzset", "c", 3); // zrange : 获取有序集合中指定范围内的元素 Set range = zSetOperations.range("myzset", 0, -1); System.out.println("range: " + range); // zrangeWithScores : 获取有序集合中指定范围内的元素及其分数 Set rangeWithScores = zSetOperations.rangeWithScores("myzset", 0, -1); System.out.println("rangeWithScores: " + rangeWithScores); // zrank : 获取元素在有序集合中的排名 Long rank = zSetOperations.rank("myzset", "b"); System.out.println("rank: " + rank); // zrevrank : 获取元素在有序集合中的倒序排名 Long reverseRank = zSetOperations.reverseRank("myzset", "b"); System.out.println("reverseRank: " + reverseRank); // zscore : 获取元素的分数 Double score = zSetOperations.score("myzset", "b"); System.out.println("score: " + score); // zcount : 获取有序集合中指定分数范围内的元素数量 Long count = zSetOperations.count("myzset", 1, 2); System.out.println("count: " + count); // zrem : 从有序集合中删除元素 Long remove = zSetOperations.remove("myzset", "a", "b"); System.out.println("remove: " + remove); // zcard : 获取有序集合的元素数量 Long size = zSetOperations.size("myzset"); System.out.println("size: " + size); // zincrby : 增加元素的分数 Double increment = zSetOperations.incrementScore("myzset", "b", 1); System.out.println("increment: " + increment); } /** * 操作通用类型命令 */ @Test public void testCommon() { // keys : 获取所有键 Set keys = redisTemplate.keys("*"); System.out.println("keys: " + keys); // exists : 检查键是否存在 Boolean exists = redisTemplate.hasKey("name"); System.out.println("exists: " + exists); // type : 获取键的类型 DataType type = redisTemplate.type("name"); System.out.println("type: " + type); for (Object key : keys) { DataType type1 = redisTemplate.type(key); System.out.println("key: " + key + " type: " + type1); } // expire : 设置键的过期时间 redisTemplate.expire("name", 3, TimeUnit.MINUTES); // persist : 移除键的过期时间 redisTemplate.persist("name"); // move : 移动键到另一个数据库 redisTemplate.move("name", 1); // randomKey : 随机获取一个键 String randomKey = (String) redisTemplate.randomKey(); System.out.println("randomKey: " + randomKey); // rename : 重命名键 redisTemplate.rename("name", "newName"); // renamenx : 重命名键,如果新键不存在则成功 Boolean rename = redisTemplate.renameIfAbsent("newName", "name"); System.out.println("rename: " + rename); // delete : 删除一个或多个键 redisTemplate.delete("newName"); redisTemplate.delete("age"); } }[secret]看看[/secret]
技术教程 03-28

网站已运行 35 天 | 共有文章 2 篇 | 累计访问 4485 人次