操作各种数据类型的key的方法

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);
         //==================操作的key的方法 ======================
            //删除指定的
            jds.del("hash");
            //序列化key,并返回被序列化的值
            jds.dump("key");
            //判断key是否存在
            jds.exists("key");
            //从当前库中随机返回一个key
            jds.randomKey();            
            //返回key中存储值 的数据类型
            jds.type("key");
            //返回符合正则的的所有key
            jds.keys("*k*");
            //将key移到数据库2中
            jds.move("key", 2);
            //更改key的名字。旧key不存在时报错。当新key存在时,则将覆盖旧值
            jds.rename("oldKey", "newkey");
            //仅当新key不存在时,才更改旧key名字
            jds.renamenx("oldKey", "newkey");

            //-------------------------设置过期-------------------------------- 

            //给key设置过期时间,单位:秒
            jds.expire("key", 10);
            //给key设置过期时间,值是时间戳
            jds.expireAt("key", 1293840000);
            //移除key的过期时间,key将持久保存
            jds.persist("key");
            //返回key的过期时间
            jds.ttl("key"); 
}

String

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);
          //=========================String方法==============================

            //-----------------------赋值------------------------------   
            //指定key的值,如果key已经存在,则覆盖旧值
            jds.set("key", "value");
            //给key赋值,当key存在时操作无效。避免了值的覆盖
            jds.setnx("key", "value");
            //同时指定多个key-value
            jds.mset("key5","value5","key6","6");
            //同时指定多个key-value,key已经存在的操作无效
            jds.msetnx("key6","value6","key7","7");

            //给key值设置过期时间(单位:秒),如果key存在,则新值会覆盖旧值
            jds.setex("key", 5, "valuex");
            //用value值替换从指定字符的索引开始的子串
            jds.setrange("key", 1, "value");

            //-------------------------更改--------------------------------   

            //将key中存的数字值增1,如果key不存在,则key值会被初始化为0,然后再加1
            //如果值不是数字则返回一个错误
            jds.incr("key6");
            //将key中存的数字值增加指定值,如果key不存在,则key值会被初始化为0,然后再加10
            jds.incrBy("key6", 10);
            //将key中存的数字值增加指定的浮点型值,如果key不存在,则key值会被初始化为0,然后再加
            jds.incrByFloat("key6", 10.0);
            //将key中的值减1,如果key不存在,则先初始化为0再减1
            jds.decr("key6");
            //将key中的值减去指定值,如果key不存在,则先初始化为0再减
            jds.decrBy("key6", 8);
            //在key的值的末尾追加串,如果key不存,直接赋值为当前值
            jds.append("key", "appendValue");

            //-------------------------取值--------------------------------               

            //获取key的值
            jds.get("key");
            //按字符的索引区间返回key的子串,包头也包尾
            jds.getrange("key", 0, 1);
            //将key的值改变,并返回旧值,如果key不存在返回null
            jds.getSet("key", "value1");
            //返回一个或多个key的值
            jds.mget("key","key1");
            //返回key的字符串的长度
            jds.strlen("key");

}

Hash

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);
         //=========================    Hash方法    ==============================
             //一个hash表可存储40多亿个键值对,即2的32次方减1个。
         //-------------------------赋值--------------------------------  

             // 1. hset:将名为hash的Hash表的键为key字段赋值为value
             jds.hset("hash", "key", "value");

             // 2. hmset:将多个键值对存进hash表
              Map<String, String> map = new HashMap<String, String>();
              map.put("key1", "value1");
              map.put("key2", "value2");
             jds.hmset("hash", map);

             // 3. hsetnx:只有当hash表中不存在该字段时才赋值。若字段存在,则操作无效
             jds.hsetnx("hash", "key", "22");// 由于key已经存在,所以"22"这个值未生效
             jds.hsetnx("hash", "k", "22");  // 查看k的值为22

        //-------------------------查--------------------------------

             // 4. hget:获取hash表中key键对应的值
             jds.hget("hash", "key");
             // 5. hgetAll:获取hash表中所有键值对,结果是Map类型
             jds.hgetAll("hash");
             // 6. hmget:获取hash表中指定键的值,结果是数组类型
             jds.hmget("hash", "key","key1");
             // 7. hkeys:获取hash表中所有键,结果是数组类型
             jds.hkeys("hash");
             // 8. hvals:获取hash表中所有值,结果是数组类型
             jds.hvals("hash");
             // 9.hexists:查看hash表中是否存在key键
             jds.hexists("hash", "key");
             // 10. hlen:获取hash表中键的个数
             jds.hlen("hash");
             // 11. 迭代hash表中的键值对
            // jds.hscan("hash", "");//未测试

        //-------------------------改--------------------------------

             // 12. hincrBy:将hash表中指定键的整型值加3
             jds.hincrBy("hash", "k", 3);
             // 13. hincrByFloat:将hash表中指定键的浮点型值加3
             jds.hincrByFloat("hash", "k", 3);

        //-------------------------删除--------------------------------

             // 14. hdel:删除hash表中一个或多个键值对
             jds.hdel("hash", "key","key1");
}

List

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);

         //=========================   List方法    ==============================

             //每张列表可存40多亿个元素,即2的32次方减1个。
         //-------------------------赋值--------------------------------
             // 1. lpush:向名为list的List列表头部添加一个或多个值
             jds.lpush("list", "value1","value2");
             // lpushx:将一个值插入到已存在的list列表头部,如果不存在操作无效
             jds.lpushx("list", "value3");//注:只能一次插入一个
             // rpush:将一个或多个值插入列表尾部
             jds.rpush("list", "value100","value101");
             // rpushx:将一个值插入已存在列表尾部,若列表不存在操作无效
             jds.rpushx("list", "value102");//只能插入一个
             // lset:给指定索引赋值,若索引不存在报错
             jds.lset("list", 0, "val");
             // linsert:在指定元素前面或后面插入元素
             jds.linsert("list", LIST_POSITION.BEFORE, "val", "value0");//在val元素前面插入

        //-------------------------删除--------------------------------    

             //弹出列表第一个元素
             jds.lpop("list");
             //弹出列表最后一个元素
             jds.rpop("list");
             //弹出列表最后一个元素,并添加到另一个列表中
             jds.rpoplpush("list", "otherlist");

             // lrem:删除表中count个与value相等的元素
             //count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
             //count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
             //count = 0 : 移除表中所有与 VALUE 相等的值。
             jds.lrem("list", 2, "value");           
             // ltrim:只保留指定区间的元素
             jds.ltrim("list", 0, 5);
             // 5秒.......
             jds.blpop(5, "list");

        //-------------------------取值--------------------------------   
             // llen:获取表的元素个数
             jds.llen("list");
             // lrange:获取指定区间的元素
             jds.lrange("list", 0, jds.llen("list"));
             // lindex:通过索引获取元素
             jds.lindex("list", 0);
}

Set

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);
         //=========================   Set方法    ==============================   
            //-------------------------添加--------------------------------
             //sadd:向set集合添加一个或多个元素
             jds.sadd("set", "a","b");

            //-------------------------删除--------------------------------            
             //随机返回一个元素并删除
             jds.spop("set");
             //删除集合中一个或多个元素
             jds.srem("set", "a","b");

            //-------------------------更改--------------------------------
             //将一个元素从一个集合中移到另一个集合中
             jds.smove("srckey", "dstkey", "member");
             //返回多个集合的并集
             jds.sunion("set","set1");
             //将多个集合的并集保存到另一个集合中
             jds.sunionstore("dstkey", "set","set1");

            //-------------------------取值--------------------------------
             //scard:返回set集合的元素个数
             jds.scard("set");
             //返回前面集合与后面几个集合的差集
             jds.sdiff("set","set2");
             //将几个集合的差集保存在destSet集合中
             jds.sdiffstore("destSet", "set2","set");
             //返回几个集合的交集
             jds.sinter("set","set2");
             //将几个集合的交集保存在destSet集合中
             jds.sinterstore("destSet", "set","set2");
             //判断a元素是否是set集合的成员
             jds.sismember("set", "a");
             //返回集合中的所有元素
             jds.smembers("set");
             //返回集合中一个或多个随机数
             jds.srandmember("set");
             jds.srandmember("set", 2);
}

Sorted Set

public static void main(String[] args) {
         Jedis jds = new Jedis("192.168.2.244",6379);       

        //========================= 有序集合(Sorted set) ==============================

             /*
                Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
                不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
                有序集合的成员是唯一的,但分数(score)却可以重复。
                集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1
              */
         //-------------------------赋值--------------------------------   
             // zadd:将一个或多个元素及其分数值添加到有序集合sortSet中
             // 如果value元素已经存在,则更新分数值,然后根据分数重新插入正确位置
             // 分数值可以是int和double型
             jds.zadd("sortSet", 5, "value");

        //-------------------------更改--------------------------------
             // 将value元素的分值加 2.0。如果值是负数,则为减;如果value元素不存在,则添加
             jds.zincrby("sortSet", 2, "value");
             //将一个或多个有序集合的交集存储在“destkey”集合中
             jds.zinterstore("dstkey", "sortSet","sort");

        //-------------------------删除--------------------------------
             //zrem:删除一个或多个元素
             jds.zrem("sortSet", "value","c");
             //zremrangeByRank:删除指定索引区间的元素(首尾均包含)
             jds.zremrangeByRank("sortSet", 0, 1);
             //zremrangeByScore:删除指定分数之间的元素(首尾均包含)
             jds.zremrangeByScore("sortSet", 5, 10);

        //-------------------------取值--------------------------------    
             // zcard:获取指定有序集合的全部成员数量
             jds.zcard("sortSet");
             // zcount:获取指定分数区间的成员数量
             jds.zcount("sortSet", 0, 10);
             //zrank:返回指定元素的索引值
             jds.zrank("sortSet", "a");
             //zscore:返回指定元素的分数值
             jds.zscore("sortSet", "a");
             //zrevrange:返回指定区间的元素,它们通过 索引、分数从高到低排
             jds.zrevrange("sortSet", 0, 10);
             //zrevrangeByScore:返回指定分数区间的元素,它们通过分数从高到低排列
             jds.zrevrangeByScore("sortSet", 1, 7);
             //zrevrank:返回指定成员的排名,按分数值从大到小排的
             jds.zrevrank("sortSet", "value1");
             //zrange:返回指定索引区间的元素
             jds.zrange("sortSet", 0, 10);
             // 获取全部分元素
             jds.zrange("sortSet", 0, -1);
             // zrangeByScore:返回指定分数值之间的元素
             // 具有相同分数值的元素按字典序排列
             jds.zrangeByScore("sortSet", 0, 20);

        //---------------------2.8.9版本后添加的常用方法,未测-----------------------------   
            // zlexcount:获取指定字典区间的元素个数
            // jds.zlexcount("sortSet", "[a", "[c");
             //zrangeByLex:获得指定字典区间的元素
             //jds.zrangeByLex("sortSet", "[a", "[b");
             //zremrangeByLex:删除指定字典区间的元素
             //jds.zremrangeByLex("sortSet", "(a", "[b");

     }