redis命令使用-jedis调用(Redis 字符串String)

  |   0 评论   |   0 浏览
package com.songaw.redistest;

import redis.clients.jedis.Jedis;

import java.util.List;

/**
 * @author songanwei
 * @description todo
 * @date 2022/3/17
 */

public class JedisStringTest {
    public static void main(String[] args) {
        test1();
    }

    /**
     * 连接测试
     */
    private static void test1() {
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接服务成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        //Redis 字符串(String) get set
        String testKey="test_string_key";
        jedis.set(testKey,"This is my test key");
        System.out.println("redis get "+jedis.get(testKey));

        //返回 key 中字符串值的子字符 用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
        String value=jedis.getrange(testKey,0,3);
        System.out.println("getrange 返回 key 中字符串值的子字符 0 3 "+value);
        value=jedis.getrange(testKey,0,-1);
        System.out.println("getrange 返回 key 中字符串值的子字符 0 -1 "+value);

        //将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
        String oldValue=jedis.getSet(testKey+"a","test");
        String newValue=jedis.get(testKey+"a");
        System.out.println("将给定 key 的值设为 value ,并返回 key 的旧值 oldValue: "+oldValue+"  newValue: "+newValue);

        //setbit gitbit  可用于打卡 或者 该用户是否看过某个东西
        jedis.del(testKey);
        //打卡
        for(int i=1;i<=10;i++) {
            // i 是天
            if(i%2==0) {
                jedis.setbit(testKey, i, true);
            }
        }
        for(int i=1;i<=10;i++) {
            boolean v=jedis.getbit(testKey,i);
            System.out.println("bitmap的使用 gitbit setbit i:"+i+"  "+v);
        }
        //帖子是否被看过
        jedis.del(testKey);
        String uid="123";
        jedis.setbit(testKey,Long.parseLong(uid),true);
        boolean v=jedis.getbit(testKey,Long.parseLong(uid));
        System.out.println("bitmap的使用 帖子是否被看过 gitbit setbit uid:"+uid+"  "+v);


        //mget 获取所有(一个或多个)给定 key 的值。
        String[] keys=new String[20];
        for(int i=0;i<20;i++){
            jedis.del(testKey+i);
            jedis.set(testKey+i,"test"+i);

            keys[i]=testKey+i;
            if(i%2==0){
                keys[i]=testKey+i*20;
            }
        }
        List<String> strList=jedis.mget(keys);
        for(int i=0;i<20;i++){
            System.out.println(strList.get(i));
            jedis.del(testKey+i);
        }

        //将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将会替换旧的值
        jedis.setex(testKey,1,"test");
        System.out.println("setex 将值 value 关联到 key ,并将 key 的过期时间设为 second  ttl: "+jedis.ttl(testKey));

        //Redis setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
        jedis.del(testKey);
        long result=jedis.setnx(testKey,"test");
        System.out.println("setnx 在指定的 key 不存在时,为 key 设置指定的值。 结果 "+result+"--"+jedis.get(testKey));

        // setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。
        jedis.setrange(testKey,3,"abcd");
        System.out.println(jedis.get(testKey));

        //strlen 返回 key 所储存的字符串值的长度。
        System.out.println(jedis.strlen(testKey));

        //mset 同时设置一个或多个 key-value 对。
        jedis.mset(testKey+"1","test1",testKey+"2","test2");
        System.out.println(jedis.get(testKey+"1"));
        System.out.println(jedis.get(testKey+"2"));

        //同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
        jedis.del(testKey+"3","test3",testKey+"4","test4");
        result = jedis.msetnx(testKey+"3","test3",testKey+"4","test4");
        System.out.println("msetnx "+result);

        //这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间
       String resultStr = jedis.psetex(testKey,1000L,"test");
        System.out.println("psetex "+resultStr);

        // 将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
        jedis.del(testKey);

        long incr=jedis.incr(testKey);
        System.out.println("incr : "+incr+"--"+jedis.get(testKey));

        //将 key 中储存的数字加上指定的增量值。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
        incr=jedis.incrBy(testKey,2);
        System.out.println("incrBy : "+incr+"--"+jedis.get(testKey));
        //key 不是数字值时 JedisDataException: ERR value is not an integer or out of range



        //将 key 中储存的数字值减一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
        long decr=jedis.decr(testKey);
        System.out.println("decr : "+decr+" "+jedis.get(testKey));
        decr=jedis.decrBy(testKey,2);
        System.out.println("decrBy : "+decr+" "+jedis.get(testKey));

        //如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。 返回字符长度
        //果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
        jedis.append(testKey,"123");
        System.out.println(jedis.get(testKey));


    }

}


标题:redis命令使用-jedis调用(Redis 字符串String)
作者:不断努力的青春
地址:http://songaw.com/articles/2022/03/17/1647512003384.html