• Jedis操作Redis--String类型


    /**
     * String(字符串)
     * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRBY,INCRBYFLOAT,MGET,MSET,MSETNX,PSETEX,SET,SETBIT,SETEX,SETNX,SETRANGE,STRLEN
     */
    public class StringTypeTest {
        private Jedis jedis;
    
        private static final String KEY = "name";
    
        private static final String VALUE = "layman";
    
        @Before
        public void setUp() {
            JedisShardInfo info = new JedisShardInfo("192.168.133.188", 6379);
            this.jedis = new Jedis(info);
            jedis.select(0);
        }
    
        /**
         * SET key value [EX seconds] [PX milliseconds] [NX|XX]
         * 将字符串值 value 关联到 key 。
         * 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
         * 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
         * 可选参数
         * 从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
         * EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value 。
         * PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value 。
         * NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value 。
         * XX :只在键已经存在时,才对键进行设置操作。
         */
        @Test
        public void SET() {
            //设置不存在key为name时设置其值为layman并在15秒后过期
            jedis.set(KEY, VALUE, "NX", "EX", 15);
            out(jedis.get(KEY));
        }
    
        /**
         * MSET key value [key value ...]  MGET key [key ...]返回所有(一个或多个)给定 key 的值。如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil 。因此,该命令永不失败。
         * 同时设置一个或多个 key-value 对。
         * 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
         * MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。
         */
        @Test
        public void MSET() {
            jedis.mset("name", "layman", "age", "24");
            out(jedis.mget("name", "age"));
        }
    
        /**
         * GET key
         * 返回 key 所关联的字符串值。
         * 如果 key 不存在那么返回特殊值 nil 。
         * 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。
         */
        @Test
        public void GET() {
            out(jedis.get(KEY));
        }
    
        /**
         * GETSET key value
         * 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
         * 当 key 存在但不是字符串类型时,返回一个错误。
         */
        @Test
        public void GETSET() {
            SET();
            out(jedis.getSet(KEY, "leo"));
            GET();
        }
    
        /**
         * APPEND key value
         * 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
         * 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
         */
        @Test
        public void APPEND() {
            SET();
            jedis.append("name", "APPEND");
            GET();
        }
    
        /**
         * SETBIT key offset value
         * 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
         * 位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。
         * 当 key 不存在时,自动生成一个新的字符串值。
         * 字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。
         * offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。
         */
        @Test
        public void SETBIT() {
            jedis.setbit(KEY, 2l, true);
            BITCOUNT();
        }
    
        /**
         * BITCOUNT key [start] [end]
         * 计算给定字符串中,被设置为 1 的比特位的数量。
         * 一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
         * start 和 end 参数的设置和 GETRANGE 命令类似,都可以使用负数值: 比如 -1 表示最后一个字节, -2 表示倒数第二个字节,以此类推。
         * 不存在的 key 被当成是空字符串来处理,因此对一个不存在的 key 进行 BITCOUNT 操作,结果为 0 。
         */
        @Test
        public void BITCOUNT() {
            out(jedis.bitcount(KEY));
        }
    
        /**
         * SETRANGE key offset value
         * 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。
         * 不存在的 key 当作空白字符串处理。
         * SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,
         * 如果给定key原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),
         * 那么原字符和偏移量之间的空白将用零字节(zerobytes, "x00" )来填充。
         */
        @Test
        public void SETRANGE() {
            SET();
            jedis.setrange(KEY, 4L, "leo");
            GET();
            /** 结果
             *  layman
             *  laymleo
             */
        }
    
        /**
         * GETRANGE key start end
         * 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
         * 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。
         */
        @Test
        public void GETRANGE() {
            SET();
            out(jedis.getrange(KEY, 2, -3));
        }
    
        /**
         * 返回 key 所储存的字符串值的长度。
         */
        @Test
        public void STRLEN() {
            SET();
            out(jedis.strlen(KEY));
        }
    
        /**
         * INCR key
         * 将 key 中储存的数字值增一。
         * 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
         * 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
         */
        @Test
        public void INCR() {
            jedis.incr(KEY);
            GET();
        }
    
        /**
         * INCRBY key increment     INCRBYFLOAT key increment
         * 将 key 所储存的值加上增量 increment 。
         * 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
         * 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
         */
        @Test
        public void INCRBY() {
            jedis.incrBy(KEY, 24);
            GET();
            jedis.incrByFloat(KEY, 0.22225);
            GET();
        }
    
        private void out(Object msg) {
            System.out.println(msg);
        }
    }
  • 相关阅读:
    【炼数成金 RapidMiner 一 】数据挖掘概念与技术原书第三版(第一章)1.9节的习题解
    【炼数成金 NOSQL引航 一 】 进入NoSQL世界;NoSQL与SQL的战争
    实现学校信息增删改查-第一节添加学校名称
    关键字高亮显示,js轻松实现
    NPOI导出Excel .net
    wpf image控件循环显示图片 以达到动画效果 问题及解决方案
    NuGet的简单科普
    日志收集系统
    一些实用的方法,持续更新...
    图片质量压缩
  • 原文地址:https://www.cnblogs.com/Laymen/p/6119515.html
Copyright © 2020-2023  润新知