Redis各种数据类型的实例

String类型实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

import java.util.List;

public class RedisStringTesting {
    public static void main(String[] args) throws InterruptedException {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());

        // Set 设置指定 key 的值  || Get 获取指定 key 的值。
        System.out.println(jedis.get("k1"));
        jedis.set("k4", "k4_Redis");
        System.out.println("----------------------------------------");
        // 批量操作  mset   mget
        String mset = jedis.mset("str1", "v1", "str2", "v2", "str3", "v3");
        System.out.println(mset);
        // Jedis.mget 获取所有(一个或多个)给定 key 的值。
        List<String> mget = jedis.mget("str1", "str2", "str3");
        System.out.println(mget);

        // Jedis.getrange  返回 key 中字符串值的子字符
        jedis.set("mykey", "This is my test key");
        String mykey = jedis.getrange("mykey", 0, 3);
        System.out.println(mykey);

        //将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
        String set = jedis.getSet("mykey", "hello");
        System.out.println(set);

        //将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
        jedis.setex("seconds_key", 1, "seconds_value");
        jedis.setex("seconds_key_1", 10, "seconds_value_1");
        Thread.sleep(1000);

        // 获取过期的数据  返回时null
        String seconds_key = jedis.get("seconds_key");

        // 获取没过期的数据 返回就原来的数据
        String seconds_key_1 = jedis.get("seconds_key_1");
        System.out.println(seconds_key);
        System.out.println(seconds_key_1);

        // Jedis.incr 将 key 所储存的值加上给定的增量值(increment)
        jedis.incr("num");
        System.out.println("+1 :" + jedis.get("num"));

        // Jedis.decr 将 key 中储存的数字值减一
        jedis.decr("num");
        System.out.println("+1 :" + jedis.get("num"));

        // jedis.incrBy 将 key 所储存的值加上给定的增量值(increment) 。
        jedis.incrBy("num", 10);
        System.out.println("+10 :" + jedis.get("num"));

        //Jedis.incrBy 将 key 所储存的值加上给定的浮点增量值(increment) 。
        jedis.decrBy("num", 10);
        System.out.println("-10 :" + jedis.get("num"));

        //如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
        jedis.append("mykey"," 帅哥!");
        System.out.println("mykey append 帅哥!:"+jedis.get("mykey"));
    }
}

List实例

package com.zt.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.ListPosition;

/**
 * Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
 * 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
 */
public class RedisListTesting {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());
        //  List
        // 删除mylist原来的值
        jedis.del("mylist");
        //  Jedis.lpush  将一个或多个值插入到列表头部
        jedis.lpush("mylist", "list_1");
        jedis.lpush("mylist", "list_2");
        jedis.lpush("mylist", "list_3");
        jedis.lpush("mylist", "list_4");

        String[] strings = {"1", "2", "3"};
        jedis.del("mylist_1");
        jedis.lpush("mylist_1", strings);

        // Jedis.lrange 获取到0 到-1  的值 也就是所有的值
        System.out.println(jedis.lrange("mylist_1", 0, -1));
        System.out.println(jedis.lrange("mylist", 0, -1));

        //  Jedis.lpop 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
        jedis.lpop("mylist");
        System.out.println(jedis.lrange("mylist", 0, -1));

        //  Jedis.rpoplpush  移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
        jedis.rpoplpush("mylist", "mylist_1");
        System.out.println(jedis.lrange("mylist", 0, -1));
        System.out.println(jedis.lrange("mylist_1", 0, -1));

        // Jedis.lindex  通过索引获取列表中的元素
        String mylist = jedis.lindex("mylist", 1);
        System.out.println(mylist);

        //  Jedis.linsert 在列表的元素前或者后插入元素
        jedis.linsert("mylist", ListPosition.BEFORE, "list_2", "12121");
        jedis.linsert("mylist", ListPosition.AFTER, "list_2", "123456789");
        System.out.println(jedis.lrange("mylist", 0, -1));

        //   jedis.llen 获取列表长度
        Long len = jedis.llen("mylist");
        System.out.println("mylist的长度:" + len);

        //  移出并获取列表的第一个元素
        String val = jedis.lpop("mylist");
        System.out.println("mylist移除:" + val);
        System.out.println(jedis.lrange("mylist", 0, -1));

        // Jedis.lrem   移除列表元素
        jedis.lrem("mylist", -1, "list_2");
        System.out.println(jedis.lrange("mylist", 0, -1));

        // Jedis.ltrim  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
        jedis.ltrim("mylist", 0, 0);
        System.out.println(jedis.lrange("mylist", 0, -1));

    }
}

Keys实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class RedisKeysTesting {

  public static void main(String[] args) {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("192.168.91.100",6379);
    //查看服务是否运行,打出pong表示OK
    System.out.println("connection is OK==========>: "+jedis.ping());

     // keys *
    jedis.set("k1","v1");
    jedis.set("k2","v2");
    jedis.set("k3","v3");
    // 获取到set的无序的
    Set<String> keys = jedis.keys("*");
    for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
      String key = (String) iterator.next();
      System.out.println(key+":"+jedis.get(key));
    }
  }
}

数据库选择实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

public class RedisDbChoiceTesting {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());

        jedis.select(0);
        // keys  里面  是一个正则表达式
        System.out.println("0库所有的keys"+ jedis.keys("*"));
        // 跟换库
        jedis.select(1);
        jedis.set("db2","db2_value");
        System.out.println("1库里面key值为db2的值:"+jedis.get("db2"));
    }
}

Hash实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
 * Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
 *
 */
public class RedisHashTesting {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());

        // Jedis.hset  将哈希表 key 中的字段 field 的值设为 value
        jedis.hset("hash", "1", "1");
        jedis.hset("hash", "2", "2");
        jedis.hset("hash", "3", "3");

        // Jedis.hget 获取所有给定字段的值
        System.out.println(jedis.hget("hash", "1"));
        System.out.println(jedis.hget("hash", "2"));
        System.out.println(jedis.hget("hash", "3"));

        // Jedis.hvals 获取哈希表中所有值。
        List<String> hash = jedis.hvals("hash");
        System.out.println(hash);

        //   jedis.hdel  删除一个或多个哈希表字段
        //   查看哈希表 key 中,指定的字段是否存在
        Boolean hexists = jedis.hexists("hash", "2");
        System.out.println("jedis.hexists('hash', '2')存在状态: " + hexists);
        //  删除一个值
        jedis.hdel("hash", "2");
        hexists = jedis.hexists("hash", "2");
        System.out.println("jedis.hexists('hash', '2')存在状态: " + hexists);

        //  Jedis.hincrBy  为哈希表 key 中的指定字段的整数值加上增量 increment
        jedis.hincrBy("hash", "num", 3);

        //  Jedis.hgetAll 获取在哈希表中指定 key 的所有字段和值
        Map<String, String> hashMap = jedis.hgetAll("hash");
        System.out.println(hashMap.toString());

        //  获取所有哈希表中的字段
        Set<String> hashSet = jedis.hkeys("hash");
        System.out.println("所有哈希表中的字段:" + hashSet);

        // Jedis.hlen  获取哈希表中字段的数量
        Long hashLen = jedis.hlen("hash");
        System.out.println("所有哈希表中的长度:" + hashLen);

        //  Jedis.hmget获取所有给定字段的值
        String[] str = {"1", "3"};
        List<String> strKey = jedis.hmget("hash", str);
        System.out.println("获取所有给定字段的值:"+strKey);

        //  同时将多个 field-value (域-值)对设置到哈希表 key 中
        HashMap<String, String> map = new HashMap<>();
        map.put("12121","12121");
        map.put("22222","2222");
        jedis.hmset("hmsetMap",map);

    }
}

Set实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

import java.util.Set;

/**
 * Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
 * Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
 * 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
 */
public class RedisSetTesting {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());

        //  Jedis.sadd 向集合添加一个或多个成员
        Long sadd = jedis.sadd("mySet", "set1", "set2");
        System.out.println(sadd);

        // Jedis.scard 获取集合的成员数
        Long mySet = jedis.scard("mySet");
        System.out.println("获取Set的数量:"+mySet);

        // 返回第一个集合与其他集合之间的差异。
        Long mySet_1 = jedis.sadd("mySet_1", "set13", "set2");
        Set<String> sdiff = jedis.sdiff("mySet", "mySet_1");
        System.out.println("获取到set里面的不同的值:"+sdiff);

        // jedis.sdiffstore 返回给定所有集合的差集并存储在 destination 中
        // jedis.smembers  获取所有的成员变量
        jedis.sdiffstore("mySet_2", "mySet_1", "mySet");
        System.out.println("mySet_1相对mySet的差值:"+jedis.smembers("mySet_2"));
        jedis.sdiffstore("mySet_2", "mySet", "mySet_1");
        System.out.println("mySet相对mySet_1的差值:"+jedis.smembers("mySet_2"));

       // 将 member 元素从 source 集合移动到 destination 集合   再移动后mySet_2中的移动元素会消失
        Long smove = jedis.smove("mySet_2", "mySet_3", "set1");
        System.out.println(jedis.smembers("mySet_3"));
        System.out.println(jedis.smembers("mySet_2"));

        //

    }
}

有序set的实例

package com.zt.redis;

import redis.clients.jedis.Jedis;

/**
 * Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
 * 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
 * 有序集合的成员是唯一的,但分数(score)却可以重复。
 * 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
 */
public class RedisSortedSetTesting {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("192.168.91.100", 6379);
        //查看服务是否运行,打出pong表示OK
        System.out.println("connection is OK==========>: " + jedis.ping());

       // 向有序集合添加一个或多个成员,或者更新已存在成员的分数
        jedis.zadd("SortedSetKeyOne",111,"222");
        jedis.zadd("SortedSetKeyOne",1,"1");
        jedis.zadd("SortedSetKeyOne",2,"2");

        //获取有序集合的成员数
        Long sortedSetKeyOne = jedis.zcard("SortedSetKeyOne");
        System.out.println("获取到有序集合的数量:"+sortedSetKeyOne);

        //计算在有序集合中指定区间分数的成员数
        sortedSetKeyOne = jedis.zcount("SortedSetKeyOne", 1, 2);
        System.out.println("有序集合中指定区间分数的成员数:"+sortedSetKeyOne);

        //  有序集合中对指定成员的分数加上增量 increment
        Double sortedSetKeyOne1 = jedis.zincrby("SortedSetKeyOne", 10, "1");
        System.out.println("有序集合中"+sortedSetKeyOne1);

        //  移除有序集合中的一个或多个成员
        Long sortedSetKeyOne2 = jedis.zrem("SortedSetKeyOne", "1");
        System.out.println("删除SortedSetKeyOne的成员'1'的状态:"+sortedSetKeyOne2);

        // 返回有序集中,成员的分数值
        Double sortedSetKeyOne3 = jedis.zscore("SortedSetKeyOne", "222");
        System.out.println("SortedSetKeyOne的成员222的分数:"+sortedSetKeyOne3);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值