开发者

redis 中 redisTemplate 的所有操作与函数详解

开发者 https://www.devze.com 2025-12-24 08:58 出处:网络 作者: Billow_lamb
价值2999元 Java视频教程限时免费下载
专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
立即下载
目录一、基础操作1.1 Key 相关操作1.2 通用操作二、String 类型操作2.1 基本操作2.2 数值操作三、Hash 类型操作四、List 类型操作五、Set 类型操作六、ZSet(有序集合)操作七、事务操作八、管道操作九、发布订阅十、
目录
  • 一、基础操作
    • 1.1 Key 相关操作
    • 1.2 通用操作
  • 二、String 类型操作
    • 2.1 基本操作
    • 2.2 数值操作
  • 三、Hash 类型操作
    • 四、List 类型操作
      • 五、Set 类型操作
        • 六、ZSet(有序集合)操作
          • 七、事务操作
            • 八、管道操作
              • 九、发布订阅
                • 十、Lua脚本执行

                  版本

                   <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-data-Redis</artifactId>
                        <version>2.7.3</version>
                      </dependency>
                      <dependency>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-dependencies</artifactId>
                          <version>2.6.13</version>
                        </dependency>

                  RedisCache 文http://www.devze.com

                  @Component
                  public class RedisCache
                  {
                      @Autowired
                      public RedisTemplate redisTemplate;
                  }

                  一、基础操作

                  1.1 Key 相关操作

                  // 删除 key
                  redisTemplate.delete("key");
                  // 删除多个 key
                  redisTemplate.delete(Arrays.asList("key1", "key2"));
                  // 判断 key 是否存在
                  Boolean exists = redisTemplate.hasKey("key");
                  // 设置过期时间(秒)
                  redisTemplate.expire("key", 60, TimeUnit.SECONDS);
                  // 获取过期时间
                  Long expireTime = redisTemplate.getExpire("key");
                  // 移除过期时间,永久保存
                  redisTemplate.persist("key");
                  // 获取所有匹配的 key
                  Set<String> keys = redisTemplate.keys("pattern*");

                  1.2 通用操作

                  // 获取 key 的类型
                  DataType type = redisTemplate.type("key");
                  // 随机获取一个 key
                  String randomKey = redisTemplate.randomKey();
                  // 重命名 key
                  redisTemplate.rename("oldKey", "newKey");
                  // 移动 key 到指定数据库
                  redisTemplate.move("key", 1);

                  二、String 类型操作

                  2.1 基本操作

                  // 设置值
                  redisTemplate.opsForValue().set("key", "value");
                  // 设置值并设置过期时间
                  redisTemplate.opsForValue().set("key", "value", 10, TimeUnit.MINUTES);
                  // 获取值
                  String value = (String) redisTemplate.opsForValue().get("key");
                  // 设置新值并返回旧值
                  Objewww.devze.comct oldValue = redisTemplwww.devze.comate.opsForValue().getAndSet("key", "newValue");
                  // 批量设置
                  Map<String, String> map = new HashMap<>();
                  redisTemplate.opsForValue().multiSet(map);
                  // 批量获取
                  List<Object> values = redisTemplate.opsForValue().multiGet(Arrays.asList("key1", "key2"));

                  2.2 数值操作

                  // 递增
                  Long incremented = redisTemplate.opsForValue().increment("counter", 1);
                  // 递减
                  Long decremented = redisTemplate.opsForValue().decrement("counter", 1);
                  // 浮点数增加
                  Double doubleValue = redisTemplate.opsForValue().increment("编程doubleKey", 1.5);

                  三、Hash 类型操作

                  // 设置单个 field
                  redisTemplate.opsForHash().put("hashKey", "field", "value");
                  // 获取单个 field
                  Object fieldValue = redisTemplate.opsForHash().get("hashKey", "field");
                  // 设置多个 field
                  Map<String, String> hashMap = new HashMap<>();
                  redisTemplate.opsForHash().putAll("hashKey", hashMap);
                  // 获取所有 field
                  Map<Object, Object> allEntries = redisTemplate.opsForHash().entries("hashKey");
                  // 删除 field
                  redisTemplate.opsForHash().delete("hashKey", "field1", "field2");
                  // 判断 field 是否存在
                  Boolean hasField = redisTemplate.opsForHash().hasKey("hashKey", "field");
                  // 获取所有 keys(fields)
                  Set<Object> hashKeys = redisTemplate.opsForHash().keys("hashKey");
                  // 获取所有 values
                  List<Object> hashValues = redisTemplate.opsForHash().values("hashKey");
                  // 获取大小
                  Long size = redisTemplate.opsForHash().size("hashKey");

                  四、List 类型操作

                  // 左侧插入
                  redisTemplate.opsForList().leftPush("listKey", "value");
                  // 右侧插入
                  redisTemplate.opsForList().rightPush("listKey", "value");
                  // 批量插入
                  redisTemplate.opsForList().rightPushAll("listKey", "v1", "v2", "v3");
                  // 左侧弹出
                  Object leftValue = redisTemplate.opsForList().leftPop("listKey");
                  // 右侧弹出
                  Object rightValue = redisTemplate.opsForList().rightPop("listKey");
                  // 获取列表长度
                  Long listSize = redisTemplate.opsForList().size("listKey");
                  // 获取指定范围元素
                  List<Object> range = redisTemplate.opsForList().range("listKey", 0, -1);
                  // 根据索引获取元素
                  Object element = redisTemplate.opsForList().index("listKey", 1);
                  // 设置指定位置的值
                  redisTemplate.opsForList().set("listKey", 0, "newValue");
                  // 删除指定值的元素
                  redisTemplate.opsForList().remove("listKey", 1, "value");

                  五、Set 类型操作

                  // 添加元素
                  redisTemplate.opsForSet().add("setKey", "value1", "value2");
                  // 获取所有元素
                  Set<Object> members = redisTemplate.opsForSet().members("setKey");
                  // 判断是否成员
                  Boolean isMember = redisTemplate.opsForSet().isMember("setKey", "value");
                  // 删除元素
                  Long removed = redisTemplate.opsForSet().remove("setKey", "value");
                  // 获取大小
                  Long setSize = redisTemplate.opsForSet().size("setKey");
                  // 求交集
                  Set<Object> intersect = redisTemplate.opsForSet().intersect("set1", "set2");
                  // 求并集
                  Set<Object> union = redisTemplate.opsForSet().union("set1", "set2");
                  // 求差集
                  Set<Object> difference = redisTemplate.opsForSet().difference("set1", "set2");

                  六、ZSet(有序集合)操作

                  // 添加元素(带分数)
                  redisTemplate.opsForZSet().add("zsetKey", "value", 100);
                  // 获取分数
                  Double score = redisTemplate.opsForZSet().score("zsetKey", "value");
                  // 增加分数
                  Double newScore = redisTemplate.opsForZSet().incrementScore("zsetKey", "value", 10);
                  // 按排名范围获取
                  Set<Object> rangeByRank = redisTemplate.opsForZSet().range("zsetKey", 0, -1);
                  // 按分数范围获取
                  Set<Object> rangeByScore = redisTemplate.opsForZSet().rangeByScore("zsetKey", 0, 100);
                  // 获取排名(从低到高)
                  Long rank = redisTemplate.opsForZSet().rank("zsetKey", "value");
                  // 获取排名(从高到低)
                  Long reverseRank = redisTemplate.opsForZSet().reverseRank("zsetKey", "value");
                  // 删除元素
                  redisTemplate.opsForZSet().remove("zsetKey", "value");
                  // 按排名范围删除
                  redisTemplate.opsForZSet().removeRange("zsetKey", 0, 5);
                  // 按分数范围删除
                  redisTemplate.opsForZSet().removeRangeByScore("zsetKey", 0, 50);

                  七、事务操作

                  // 开启事务支持
                  redisTemplate.setEnableTransactionSupport(true);
                  // 执行事务
                  List<Object> results = redisTemplate.execute(new SessionCallback<List<Object>>() {
                      @Override
                      public List<Object> execute(RedisOperations operations) throws DataAccessException {
                          operations.multi();  // 开始事务
                          operations.opsForValue().set("key1", "value1");
                          operations.opsForValue().set("key2", "value2");
                          return operations.exec();  // 执行事务
                      }
                  });

                  八、管道操作

                  // 使用管道批量操作
                  List<Object> results = redisTemplate.executePipelined(new RedisCallback<Object>() {
                      @Override
                      public Object dwww.devze.comoInRedis(RedisConnection connection) throws DataAccessException {
                          connection.openPipeline();
                          connection.set("key1".getBytes(), "value1".getBytes());
                          connection.set("key2".getBytes(), "value2".getBytes());
                          return null;
                      }
                  });
                  

                  九、发布订阅

                  // 发送消息到频道
                  redisTemplate.convertAndSend("channelName", "message content");
                  // 接收消息需要配置 MessageListener(通常通过配置类实现)

                  十、Lua脚本执行

                  // 执行 Lua 脚本
                  DefaultRedisScript<Long> script = new DefaultRedisScript<>();
                  script.setScriptText("return redis.call('get', KEYS[1])");
                  script.setResultType(Long.class);
                  Long result = redisTemplate.execute(script, Arrays.asList("key"));

                  到此这篇关于redis 中 redisTemplate 的所有操作与函数详解的文章就介绍到这了,更多相关redis redisTemplate函数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

                  0
                  价值2999元 Java视频教程限时免费下载
                  专为Java开发者设计,涵盖核心技术、架构设计、性能优化等
                  立即下载

                  精彩评论

                  暂无评论...
                  验证码 换一张
                  取 消