redis命令和Spring 的RedisTemplate操作对应关系

前言

有时候熟悉了redis命令,但是用到spring的RedisTemplte的时候就又糊涂了,命令和操作是谁对谁的,我就有点晕了,所以花了点时间整理了一下。

首先,redis命令执行可以在本地环境启动redis后,再启动redis-cli的客户端来敲命令,如果不想或没有安装redis,那就可以用这个网站,可以直接执行redis命令。我参考的redis命令大全地址:https://www.redis.net.cn/order/3687.html

说明

在代码中,我是使用的spring的RedisTemplate来操作的,那么就得受spring管理。
我是在一个maven项目中写了一个简单的controller-service来操作redis的,实际应用中的场景涉及到对数据库的增删改查,再对redis做同样的增删改查。

maven
    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

测试

我使用postman来调用的
在这里插入图片描述
只需要传一下自定义的类型即可。

配置

#服务配置
server.port=8885
server.tomcat.accept-count=1000
server.tomcat.max-connections=20000
server.tomcat.max-threads=1000
server.tomcat.min-spare-threads=100

#本地redis配置
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.timeout=20000
spring.redis.jedis.pool.max-idle=5
spring.redis.jedis.pool.max-wait=5
spring.redis.jedis.pool.min-idle=0
spring.redis.jedis.pool.max-active=5

一、准备操作

先上一下开胃小菜

controller
package com.fanhf.javastudy.mybatistest.controller;

import com.fanhf.javastudy.mybatistest.bean.BondsBean;
import com.fanhf.javastudy.mybatistest.service.BondsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/bonds")
@Api(tags = "redis测试")
@Slf4j
public class BondsController {
    @Autowired
    private BondsService bondsService;

    @PostMapping(value = "/redisDemo")
    @ApiOperation(value = "redis不同数据结构demo")
    public void getBondsRedis(@RequestBody String  type){
         bondsService.getBondsRedis(type);
    }
}   
service
package com.fanhf.javastudy.mybatistest.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fanhf.javastudy.mybatistest.bean.BondsBean;
import com.fanhf.javastudy.mybatistest.dao.BondsDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.DefaultTypedTuple;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Service;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;

@Service
@Slf4j
public class BondsService {
    private static final  String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

      public void getBondsRedis(String type) {
        switch (Integer.parseInt(type)){
            case 0:
                log.info("==================Keys操作==========================");
                testRedisKeysCommand();
                break;
            case 1:
                log.info("==================string操作==========================");
                testRedisStringCommand();
                break;
            case 2:
                log.info("==================list操作============================");
                testRedisListCommand();
                break;
            case 3:
                log.info("====================hash操作==========================");
                testRedisHashCommand();
                break;
            case 4:
                log.info("====================set操作===========================");
                testRedisSetCommand();
                break;
            case 5:
                log.info("====================zset操作==========================");
                testRedisZSetCommand();
                break;
            default: return;
        }
    }
  

二、数据类型操作

下面都是调用的方法

1、keys的操作
  public void testRedisKeysCommand(){
        log.info("========expire=============={}",redisTemplate.expire("string1",3L, TimeUnit.MILLISECONDS));
        log.info("========persist============={}",redisTemplate.persist("string1"));
        log.info("========hasKey=============={}",redisTemplate.hasKey("string1"));
        log.info("========getExpire==========={}",redisTemplate.getExpire("string1"));
        log.info("========type================{}",redisTemplate.type("score"));
        log.info("========delete=============={}",redisTemplate.delete("string1"));
    }
 }
命令redisTemplate说明
expire string1 3redisTemplate.expire(“string1”,3L, TimeUnit.MILLISECONDS)设置key3秒后到期
persist string1redisTemplate.persist(“string1”)移除 key 的生存时间
exists string1redisTemplate.hasKey(“string1”)判断key 是否存在
ttl string1redisTemplate.getExpire(“string1”)剩余过期时间
type scoreredisTemplate.type(“score”)查看当前key的类型string
del string1redisTemplate.delete(“string1”)删除key

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

2、String操作

String 的使用场景:value 除了是字符串以外还可以是数字。

  • 计数器

  • 统计多单位的数量

  • 粉丝数

  • 对象缓存存储

    public void testRedisStringCommand(){
        redisTemplate.opsForValue().set("redisKey","redisValue");
        log.info("========get获取value========={}",redisTemplate.opsForValue().get("redisKey"));
        log.info("========getAndSet==========={}",redisTemplate.opsForValue().getAndSet("string1","value1"));
        log.info("========setIfAbsent========={}",redisTemplate.opsForValue().setIfAbsent("wwwwwwwwwww","value2"));
        log.info("========setIfPresent========{}",redisTemplate.opsForValue().setIfPresent("string3","value3"));
        log.info("========get================={}",redisTemplate.opsForValue().get("string3"));
        redisTemplate.opsForValue().set("score","1000");
        log.info("========increment==========={}",redisTemplate.opsForValue().increment("score",100));
        log.info("========score==============={}",redisTemplate.opsForValue().get("score"));
        log.info("========score==============={}",redisTemplate.opsForValue().decrement("score"));
        log.info("========score==============={}",redisTemplate.opsForValue().decrement("score"),200);
        log.info("========get================={}",redisTemplate.opsForValue().get("string1"));
        log.info("========get================={}",redisTemplate.opsForValue().get("string1"));
        redisTemplate.opsForValue().set("mystr","mystrvalue");
        log.info("========append=============={}",redisTemplate.opsForValue().append("mystr1","mystrvalue1"));
        log.info("========get================={}",redisTemplate.opsForValue().get("mystr"));
        log.info("========get================={}",redisTemplate.opsForValue().get("mystr1"));
        log.info("========size================{}",redisTemplate.opsForValue().size("mystr"));
        log.info("========size================{}",redisTemplate.opsForValue().size("mystr1"));
    }
命令redisTemplate说明
set key1 value1redisTemplate.opsForValue().set(“key1”,“value1”);将key和value放到redis中
get key1redisTemplate.opsForValue().get(redisKey)根据key从redis中取出value
getsetredisTemplate.opsForValue().getAndSet(“string1”,“value1”)先 get 再 set
expire string1 3redisTemplate.expire(“string1”,3L, TimeUnit.MILLISECONDS)设置key3秒后到期
persist string1redisTemplate.persist(“string1”)移除 key 的生存时间
exists string1redisTemplate.hasKey(“string1”)判断key 是否存在
ttl string1redisTemplate.getExpire(“string1”)剩余过期时间
setnx string1 value2redisTemplate.opsForValue().setIfAbsent(“string1”,“value2”)如果不存在,则设置,返回true
redisTemplate.opsForValue().setIfPresent(“string3”,“value3”)如果存在,则设置,返回true
type scoreredisTemplate.type(“score”)查看当前key的类型string
incr scoreredisTemplate.opsForValue().increment(“score”,100)自增1
incrby score 100redisTemplate.opsForValue().increment(“score”,100)自增步长100,并自减少100
decr scoreredisTemplate.opsForValue().decrement(“score”)自减1
decrby score 200redisTemplate.opsForValue().decrement(“score”),200)自减步长200,并自增长100
del string1redisTemplate.delete(“string1”)删除key
append mystr1 “hello”redisTemplate.opsForValue().append(“mystr1”,“mystrvalue1”)追加值,如果不存在,相当于 set
strlen mystrredisTemplate.opsForValue().size(“mystr”)获取字符串长度

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

3、List操作

在 Redis 中可以把 list 用作栈、队列、阻塞队列。

list 实际上是一个链表,前后都可以插入

如果key不存在,创建新的链表

如果移除了所有的值,空链表,也代表不存在

在两边插入或者改动值,效率最高。

    /**
     * redisTemplate.opsForList();//操作list
     **/
    
    public void testRedisListCommand(){
        List<String> list1 =  new ArrayList();
        list1.add("1111");
        list1.add("2222");
        list1.add("3333");
        list1.add("4444");
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1", JSONObject.toJSONString(list1)));
        log.info("=======range1==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        log.info("=======rightPush============{}", redisTemplate.opsForList().rightPush("listkey2","qqqq"));
        log.info("=======rightPush============{}", redisTemplate.opsForList().rightPush("listkey2","wwww"));
        log.info("=======rightPush============{}", redisTemplate.opsForList().rightPush("listkey2","eeee"));
        log.info("=======range2==============={}", redisTemplate.opsForList().range("listkey2",0,-1));
        log.info("=======leftPop=============={}", redisTemplate.opsForList().leftPop("listkey1"));
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1","aaaa"));
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1","  bbbb"));
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1","cccc"));
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1","  dddd"));
        log.info("=======leftPush============={}", redisTemplate.opsForList().leftPush("listkey1","ffff"));
        log.info("=======range3==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        //截取第1个到第4个元素
        redisTemplate.opsForList().trim("listkey1",0,3);
        log.info("=======range4==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        log.info("=======leftPop=============={}", redisTemplate.opsForList().leftPop("listkey1"));
        log.info("=======range5==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        log.info("=======rightPop============={}", redisTemplate.opsForList().rightPop("listkey1"));
        log.info("=======range6==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        log.info("=======size================={}", redisTemplate.opsForList().size("listkey1"));
        log.info("=======index================{}", redisTemplate.opsForList().index("listkey1",1));
        log.info("=======range7==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        log.info("=======remove==============={}", redisTemplate.opsForList().remove("listkey1",0,"cccc"));
        log.info("=======range8==============={}", redisTemplate.opsForList().range("listkey1",0,-1));
        //从listkey2([qqqq, wwww, eeee])取出右边第一个给元素,放到listkey3里
        log.info("=======rightPopAndLeftPush=={}",  redisTemplate.opsForList().rightPopAndLeftPush("listkey2","listkey3"));
        //[qqqq, wwww]
        log.info("=======range9==============={}", redisTemplate.opsForList().range("listkey2",0,-1));
        //[eeee]
        log.info("=======range10==============={}", redisTemplate.opsForList().range("listkey3",0,-1));
        //如果listkey3存在的话,将下标为0的改为”1111“
        redisTemplate.opsForList().set("listkey3",0,"1111");
        //如果listkey3存在的话,将下标为0的改为”qqqq“
        redisTemplate.opsForList().set("listkey3",0,"qqqq");
        log.info("=======range11=============={}", redisTemplate.opsForList().range("listkey3",0,-1));
        //如果listkey3存在的话,在左边添加”6666“
        log.info("=======leftPushIfPresent===={}", redisTemplate.opsForList().leftPushIfPresent("listkey3","6666"));
        log.info("=======range12=============={}", redisTemplate.opsForList().range("listkey3",0,-1));

        String[] strings =  new String[]{"asd","fgh","jkl"};
        log.info("=======rightPushAll========={}",redisTemplate.opsForList().rightPushAll("listkey2",strings));
        log.info("=======range13=============={}", redisTemplate.opsForList().range("listkey2",0,-1));
    }

命令redisTemplate说明
lpush listkey1 oneredisTemplate.opsForList().leftPush(“listkey1”, JSONObject.toJSONString(list1))将一个值或者多个值,插入到列表的头部(左)
lrange listkey1 0 -1redisTemplate.opsForList().range(“listkey1”,0,-1)查看全部元素
rpush listkey2 qqqqredisTemplate.opsForList().rightPush(“listkey2”,“qqqq”)将一个值或者多个值,插入到列表的头部(右)
lpop listkey1redisTemplate.opsForList().leftPop(“listkey1”)移除list的从左边数第一个元素
rpop listkey1redisTemplate.opsForList().rightPop(“listkey1”)移除list的从右边数第一个元素
llen listkey1redisTemplate.opsForList().size(“listkey1”)长度
lindex listkey1 1redisTemplate.opsForList().index(“listkey1”,1)通过下标获取list中的某一个值
lrem listkey1 0 ccccredisTemplate.opsForList().remove(“listkey1”,0,“cccc”)
rpoplpush listkey2 listkey3redisTemplate.opsForList().rightPopAndLeftPush(“listkey2”,“listkey3”)从listkey2取出右边第一个给元素,放到listkey3里
lset listkey3 0 qqqqredisTemplate.opsForList().set(“listkey3”,0,“qqqq”)如果存在,更新当前下标的值OK
lpush listkey3 6666redisTemplate.opsForList().leftPushIfPresent(“listkey3”,“6666”)如果存在listkey3,将"6666"放到listkey3中
rpush listkey2 “{“asd”,“fgh”,“jkl”}”redisTemplate.opsForList().rightPushAll(“listkey2”,strings)将一个或多个值存到listkey2中
ltrim listkey1 0 3redisTemplate.opsForList().trim(“listkey1”,0,3)截取第1个到第4个元素

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

4、Hash操作

也是 key - value 形式的,但是value 是一个map。
Hash 适合存储经常变动的对象信息,String 更适合于存储字符串

 /**
     * redisTemplate.opsForHash();//操作hash
     **/
    
    public void testRedisHashCommand(){
        redisTemplate.opsForHash().put("hash1","h1k1","v1");
        redisTemplate.opsForHash().put("hash1","h1k2","v2");
        log.info("========entries============={}",redisTemplate.opsForHash().entries("hash1"));
        redisTemplate.opsForHash().put("redishash","name","tom");
        log.info("=========get1==============={}",redisTemplate.opsForHash().get("redishash","name"));
        Map<String, String> map =  new HashMap<>();
        map.put("hashMapKey1","hashMapValue1");
        map.put("hashMapKey2","hashMapValue2");
        redisTemplate.opsForHash().putAll("hashMap",map);
        log.info("========entries============={}",redisTemplate.opsForHash().entries("hashMap"));
        log.info("========get2================{}",redisTemplate.opsForHash().get("hashMap","hashMapKey2"));
        redisTemplate.opsForHash().put("hincrby","number","5");
        log.info("========increment==========={}",redisTemplate.opsForHash().increment("hincrby","number",10L));
        log.info("========putIfAbsent========={}",redisTemplate.opsForHash().putIfAbsent("redishash1","hash","absent"));
        log.info("========get3================{}",redisTemplate.opsForHash().get("redishash1","hash"));
        log.info("========lengthOfValue======={}",redisTemplate.opsForHash().lengthOfValue("hashMap","hashMapKey1"));
        log.info("========delete=============={}",redisTemplate.opsForHash().delete("hash1","h1k1"));
        log.info("========get3================{}",redisTemplate.opsForHash().get("hash1","h1k1"));
        log.info("========keys================{}",redisTemplate.opsForHash().keys("hashMap"));
        log.info("========size================{}",redisTemplate.opsForHash().size("hashMap"));
        log.info("========size================{}",redisTemplate.opsForHash().hasKey("hincrby","number"));
    }
命令redisTemplate说明
hset redishash name tomredisTemplate.opsForHash().put(“redishash”,“name”,“tom”)将哈希表 key 中的字段 field 的值设为 value
hmset hashMap name:lily age:18redisTemplate.opsForHash().putAll(“hashMap”,map)同时将多个 field-value (域-值)对设置到哈希表 key 中
hmget hashMap name ageredisTemplate.opsForHash().entries(“hashMap”)获取所有给定字段的值
hget redishash nameredisTemplate.opsForHash().get(“redishash”,“name”)获取存储在哈希表中指定字段的值
hincrby hincrby number 10redisTemplate.opsForHash().increment(“hincrby”,“number”,10L)为哈希表 key 中的指定字段的整数值加上增量 increment
hsetnx redishash1 hash absentredisTemplate.opsForHash().putIfAbsent(“redishash1”,“hash”,“absent”)只有在字段 field 不存在时,设置哈希表字段的值
hdel redishash nameredisTemplate.opsForHash().delete(“redishash”,“name”)删除一个或多个哈希表字段
hkeys hashMapredisTemplate.opsForHash().keys(“hashMap”)获取所有哈希表中的字段
hlen hashMapredisTemplate.opsForHash().size(“hashMap”)获取哈希表中字段的数量
hexists “hincrby” “number”redisTemplate.opsForHash().hasKey(“hincrby”,“number”)查看哈希表 key 中,指定的字段是否存在

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

5、Set操作
    /**
     * redisTemplate.opsForSet();//操作set
     **/
    public void testRedisSetCommand(){
          String[] strings =  new  String[]{"aaaa","bbbb","cccc","dddd"};
        redisTemplate.opsForSet().add("setKey",strings);
        redisTemplate.opsForSet().add("setKey1","eeee");
        redisTemplate.opsForSet().add("setKey2","ffff");
        redisTemplate.opsForSet().add("setKey3","hhhh");
        redisTemplate.opsForSet().add("setKey3","iiii");
        redisTemplate.opsForSet().add("setKey3","cccc");
        redisTemplate.opsForSet().add("setKey3","llll");
        redisTemplate.opsForSet().add("setKey3","aaaa");

        log.info("=========difference============{}", redisTemplate.opsForSet().difference("setKey2","setKey1"));
        log.info("=========differenceAndStore===={}", redisTemplate.opsForSet().differenceAndStore("setKey2","setKey1","diffKey2"));
        log.info("=========members1=============={}", redisTemplate.opsForSet().members("diffKey2"));
        log.info("=========union================={}", redisTemplate.opsForSet().union("setKey2","setKey1"));
        log.info("=========unionAndStore========={}", redisTemplate.opsForSet().unionAndStore("setKey2","setKey1","setKey1-setKey2-union"));
        log.info("=========members2=============={}", redisTemplate.opsForSet().members("setKey1-setKey2-union"));
        log.info("=========isMember=============={}", redisTemplate.opsForSet().isMember("setKey","bbbb"));
        log.info("=========size=================={}", redisTemplate.opsForSet().size("setKey"));
        //pop是随机弹出某个元素,弹出后就不存在了
        log.info("=========pop==================={}", redisTemplate.opsForSet().pop("setKey3"));
        log.info("=========members3=============={}", redisTemplate.opsForSet().members("setKey3"));
        //不存在就返回0,存在则返回1
        log.info("=========remove================{}", redisTemplate.opsForSet().remove("setKey3","hhhhhhh"));
        log.info("=========move=================={}", redisTemplate.opsForSet().move("setKey1","eeee","setKey2"));
        log.info("=========members4=============={}", redisTemplate.opsForSet().members("setKey2"));
        log.info("=========randomMember=========={}", redisTemplate.opsForSet().randomMember("setKey"));
        log.info("=========members5=============={}", redisTemplate.opsForSet().members("setKey"));
        log.info("=========intersect============={}", redisTemplate.opsForSet().intersect("setKey","setKey3"));
        log.info("=========intersectAndStore====={}", redisTemplate.opsForSet().intersectAndStore("setKey","setKey3","setKey-setKey3-intersect"));
        log.info("=========members6=============={}", redisTemplate.opsForSet().members("setKey-setKey3-intersect"));
    }
命令redisTemplate说明
hset redishash name tomredisTemplate.opsForHash().put(“redishash”,“name”,“tom”)将哈希表 key 中的字段 field 的值设为 value
hmset hashMap name:lily age:18redisTemplate.opsForHash().putAll(“hashMap”,map)同时将多个 field-value (域-值)对设置到哈希表 key 中
hmget hashMapredisTemplate.opsForHash().entries(“hashMap”)获取所有给定字段的值
hget redishash nameredisTemplate.opsForHash().get(“redishash”,“name”)获取存储在哈希表中指定字段的值
hincrby hincrby number 10redisTemplate.opsForHash().increment(“hincrby”,“number”,10L)为哈希表 key 中的指定字段的整数值加上增量 increment
hsetnx redishash1 hash absentredisTemplate.opsForHash().putIfAbsent(“redishash1”,“hash”,“absent”)只有在字段 field 不存在时,设置哈希表字段的值
hdel redishash nameredisTemplate.opsForHash().delete(“redishash”,“name”)删除一个或多个哈希表字段
hkeys hashMapredisTemplate.opsForHash().keys(“hashMap”)获取所有哈希表中的字段
hlen hashMapredisTemplate.opsForHash().size(“hashMap”)获取哈希表中字段的数量
hexists “hincrby” “number”redisTemplate.opsForHash().hasKey(“hincrby”,“number”)查看哈希表 key 中,指定的字段是否存在

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

ZSet操作

    public void testRedisZSetCommand(){
        ZSetOperations.TypedTuple<String> objectTypedTuple1 = new DefaultTypedTuple<String>("zset-1",9.1);
        ZSetOperations.TypedTuple<String> objectTypedTuple2 = new DefaultTypedTuple<String>("zset-2",9.2);
        ZSetOperations.TypedTuple<String> objectTypedTuple3 = new DefaultTypedTuple<String>("zset-3",9.3);
        ZSetOperations.TypedTuple<String> objectTypedTuple4 = new DefaultTypedTuple<String>("zset-4",9.4);
        ZSetOperations.TypedTuple<String> objectTypedTuple5 = new DefaultTypedTuple<String>("zset-5",9.5);
        ZSetOperations.TypedTuple<String> objectTypedTuple6 = new DefaultTypedTuple<String>("zset-6",9.6);
        Set<ZSetOperations.TypedTuple<String>> tuples = new HashSet<ZSetOperations.TypedTuple<String>>();
        tuples.add(objectTypedTuple1);
        tuples.add(objectTypedTuple2);
        tuples.add(objectTypedTuple3);
        tuples.add(objectTypedTuple4);
        tuples.add(objectTypedTuple5);
        tuples.add(objectTypedTuple6);

        ZSetOperations.TypedTuple<String> tuples1 = new DefaultTypedTuple<String>("zset-1",8.1);
        ZSetOperations.TypedTuple<String> tuples2 = new DefaultTypedTuple<String>("zset-2",8.2);
        ZSetOperations.TypedTuple<String> tuples3 = new DefaultTypedTuple<String>("zset-3",8.3);
        Set<ZSetOperations.TypedTuple<String>> stuples1 = new HashSet<ZSetOperations.TypedTuple<String>>();
        stuples1.add(objectTypedTuple1);
        stuples1.add(objectTypedTuple2);
        stuples1.add(objectTypedTuple3);

        log.info("======add=zset1============{}",redisTemplate.opsForZSet().add("zset1",tuples));
        log.info("======add=zset2============{}",redisTemplate.opsForZSet().add("zset2",stuples1));
        log.info("======range1==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======zCard================{}",redisTemplate.opsForZSet().zCard("zset1"));
        log.info("======incrementScore======={}",redisTemplate.opsForZSet().incrementScore("zset1","zset-1",1.1));
        log.info("======intersectAndStore===={}",redisTemplate.opsForZSet().intersectAndStore("zset1","zset2", "zset1-zset2-intersect"));
        log.info("======range21=============={}",redisTemplate.opsForZSet().range("zset1-zset2-intersect",0,-1));
        log.info("======rangeByScore========={}",redisTemplate.opsForZSet().rangeByScore("zset2",8.1,8.3));
        log.info("======score================{}",redisTemplate.opsForZSet().score("zset2","zset-1"));
        log.info("======reverseRange========={}",redisTemplate.opsForZSet().reverseRange("zset1",0,-1));
        log.info("======range2==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======reverseRangeByScore=={}",redisTemplate.opsForZSet().reverseRangeByScore("zset1",9.4,9.2));
        log.info("======range3==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======reverseRank=========={}",redisTemplate.opsForZSet().reverseRank("zset1","zset-3"));
        log.info("======range4==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======count================{}",redisTemplate.opsForZSet().count("zset1",9.2,9.6));
        log.info("======unionAndStore========{}",redisTemplate.opsForZSet().unionAndStore("zset1","zset2","zset1-zset2-union"));
        log.info("======range5==============={}",redisTemplate.opsForZSet().range("zset1-zset2-union",0,-1));
        log.info("======rank================={}",redisTemplate.opsForZSet().rank("zset1","zset-2"));
        log.info("======remove==============={}",redisTemplate.opsForZSet().remove("zset1","zset-2"));
        log.info("======range6==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======removeRangeByScore==={}",redisTemplate.opsForZSet().removeRangeByScore("zset1-zset2-union",9.1,9.4));
        log.info("======range7==============={}",redisTemplate.opsForZSet().range("zset1",0,-1));
        log.info("======size================={}",redisTemplate.opsForZSet().size("zset1"));
命令redisTemplate说明
zadd zset1 9.1 zset-1 9.2 zset-2 9.3 zset-3 9.4 zset-4 9.5 zset-6redisTemplate.opsForZSet().add(“zset2”,stuples1)向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange zset1 0 -1redisTemplate.opsForZSet().range(“zset1”,0,-1)通过索引区间返回有序集合成指定区间内的成员
zcard zset1redisTemplate.opsForZSet().zCard(“zset1”)获取有序集合的成员数
zincrby zset-1 1.1 zset-1redisTemplate.opsForZSet().incrementScore(“zset1”,“zset-1”,1.1)有序集合中对指定成员的分数加上增量 increment
zinterstore zset1-zset2-intersect 2 zset1 zset2redisTemplate.opsForZSet().intersectAndStore(“zset1”,“zset2”, “zset1-zset2-intersect”)计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
zrangebyscoreredisTemplate.opsForZSet().rangeByScore(“zset2”,8.1,8.3)通过分数返回有序集合指定区间内的成员
zscore zset1 zset-2redisTemplate.opsForZSet().score(“zset1”,“zset-2”)返回有序集中,成员的分数值
zrevrange zset1 0 -1redisTemplate.opsForZSet().reverseRange(“zset1”,0,-1)返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrangebyscore zset1 9.4 9.2redisTemplate.opsForZSet().reverseRangeByScore(“zset1”,9.4,9.2)返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrank zset1 zset-3redisTemplate.opsForZSet().reverseRank(“zset1”,“zset-3”)返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zcount zset1 9.2 9.6redisTemplate.opsForZSet().count(“zset1”,9.2,9.6)计算在有序集合中指定区间分数的成员数
zunionstore zset1-zset2-union 2 zset1 zset2redisTemplate.opsForZSet().unionAndStore(“zset1”,“zset2”,“zset1-zset2-union”)计算给定的一个或多个有序集的并集,并存储在新的 key 中
zrank zset1 zset-2redisTemplate.opsForZSet().rank(“zset1”,“zset-2”)返回有序集合中指定成员的索引
zrem zset1 zset-2redisTemplate.opsForZSet().remove(“zset1”,“zset-2”)移除有序集合中的一个或多个成员
zremrangebyscore zset1-zset2-union 9.1 9.4redisTemplate.opsForZSet().removeRangeByScore(“zset1-zset2-union”,9.1,9.4)移除有序集合中给定的分数区间的所有成员
zcard zset1redisTemplate.opsForZSet().size(“zset1”)在有序集合中计算指定字典区间内成员数量

*说明:有些可能有遗漏,或者没有对应,如有错误之处还望指正。

断断续续从命令到代码,都是自己一个字一个字的打出来的,其中必然少不了出错,聪明的你看到错误千万不要吝啬你的指正,我在这里等你。。。。。

------------------------与君共勉--------------------------

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值