7.jedis操作redis

jedis操作redis

Author:SimpleWu

Jedis介绍

Jedis是Redis官方推荐的的Java客户端开发包。

官方:https://github.com/xetorthio/jedis

使用

导入依赖:

<dependencies>
  <!-- redis -->
  <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
  </dependency>
</dependencies>

使用jedis链接redis非常简单:

//Jedis jedis = new Jedis(host, port)
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("如果是pong爆炸就链接成功 :" + jedis.ping());

如果redis设置了密码必须要授权:

jedis.auth("password");  //如果设置密码,要授权
key键api
命令 描述
DEL key [key ...] 删除指定的一批keys,如果删除中的某些key不存在,则直接忽略。
DUMP key 序列化给定 key ,并返回被序列化的值。
EXISTS key [key ...] 返回key是否存在。1表示存在,0表示不存在。
EXPIRE key seconds 设置key的过期时间,超过时间后,将会自动删除该key。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE类似,都用于为 key 设置生存时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳 Unix timestamp 。
KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key 。
MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。
TTL key 返回key剩余的过期时间。
TYPE key 返回key所存储的value的数据结构类型,它可以返回string, list, set, zset 和 hash等不同的类型。
String键api
命令 描述
DEL key [key ...] 删除指定的一批keys,如果删除中的某些key不存在,则直接忽略。
DUMP key 序列化给定 key ,并返回被序列化的值。
EXISTS key [key ...] 返回key是否存在。1表示存在,0表示不存在。
EXPIRE key seconds 设置key的过期时间,超过时间后,将会自动删除该key。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE类似,都用于为 key 设置生存时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳 Unix timestamp 。
KEYS pattern 查找所有符合给定模式pattern(正则表达式)的 key 。
MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。
TTL key 返回key剩余的过期时间。
TYPE key 返回key所存储的value的数据结构类型,它可以返回string, list, set, zset 和 hash等不同的类型。
Hash哈希api
指令 描述
HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。
HGET key field 获取存储在哈希表中指定字段的值。
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMGET key field1 [field2] 获取所有给定字段的值
HGETALL key 获取在哈希表中指定 key 的所有字段和值
HDEL key field1 [field2] 删除一个或多个哈希表字段
HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
HKEYS key 获取所有哈希表中的字段
HLEN key 获取哈希表中字段的数量
HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值
HVALS key 获取哈希表中所有值
@Test
    public void test2(){
        Map<String, String> map = new HashMap<>();
        map.put("name", "SimpleWu");
        map.put("email", "[email protected]");
        //同时将多个field-value对设置到哈希表key中
        jedis.hmset("info", map);
        //获取所有给定字段的值
        List<String> list = jedis.hmget("info", "email");
        for (String string : list) {
            System.out.println(string);
        }
        System.out.println("获取数量:" + jedis.hlen("info"));
        jedis.hdel("info", "name");
        System.out.println("获取数量:" + jedis.hlen("info"));
    }
list集合api
指令 描述
LPUSH key value1 [value2] 将一个或多个值插入到列表头部
RPUSH key value1 [value2] 将一个或多个值插入到列表尾部
LRANGE key start stop 获取列表指定范围内的元素
LPOP key 移出并获取列表的第一个元素
RPOP key 移除并获取最后一个元素
LINDEX key index 通过索引获取列表中的元素
LLEN key 获取列表长度
LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
LREM key 移除列表元素
LSET key index value 通过索引设置列表元素的值
LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
@Test
    public void test3(){
        //将一个或多个值插入到列表头部
        jedis.lpush("list", new String[]{"list1","list2","list3"});
        //通过索引获取列表中的元素
        System.out.println(jedis.lindex("list",1));
        //获取列表指定范围内的元素
        List<String> list = jedis.lrange("list", 0, 1);
        for (String string : list) {
            System.out.println(string);
        }
    }
Set集合的API
指令 描述
SADD key member1 [member2] 向集合添加一个或多个成员
SCARD key 获取集合的成员数
SMEMBERS key 返回集合中的所有成员
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
SREM key member1 [member2] 移除集合中一个或多个成员
SRANDMEMBER key [count] 返回集合中一个或多个随机数
SPOP key 移除并返回集合中的一个随机元素
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
指令 描述
SDIFF key1 [key2] 返回给定所有集合的差集,在第一个set里面而不在第二个set里面的项。
SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
SINTER key1 [key2] 返回给定所有集合的交集,在第一个个set里面也在第二个set里面。
SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
SUNION key1 [key2] 返回所有给定集合的并集,将第一个set里面和第二个set里面的元素去重并合并。
SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern][COUNT count] 迭代集合中的元素
Zset集合的API
指令 描述
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT] 通过分数返回有序集合指定区间内的成员
ZREM key member [member ...] 移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
ZCARD key 获取有序集合的成员数
ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE key member 返回有序集中,成员的分数值
ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
ZSCAN key cursor [MATCH pattern][COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)
Jedis的事务
指令 描述
DISCARD 取消事务,放弃执行事务内所有命令
EXEC 执行所有事务块内的命令。
MULTI 标记一个事务块的开始
UNWATCCH 取消WATCH命令对所有key的监视。
WATCH key[key...] 监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
@Test
    public void test4(){
        //开启事务
        Transaction tx = jedis.multi();
        //添加指令到队列中
        tx.set("name", "SimpleWu");
        tx.set("email", "[email protected]");
        //执行指令
        List<Object> execs = tx.exec();
        for (Object object : execs) {
            System.out.println(object);
        }
        //取消指令
        //String discard = tx.discard();
        //System.out.println(discard);
        System.out.println(jedis.get("name"));
    }
Jedis的连接池
@Test
public void test5(){
  JedisPoolConfig poolConfig = new JedisPoolConfig();
  // 最大空闲连接数, 默认8个
  poolConfig.setMaxIdle(10);
  // 最小空闲连接数, 默认0
  poolConfig.setMinIdle(0);
  // 最大连接数, 默认8个
  poolConfig.setMaxTotal(100);
  // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),
  // 如果超时就抛异常,小于零:阻塞不确定的时间,
  // 默认-1
  poolConfig.setMaxWaitMillis(-1);
  // 在获取连接的时候检查有效性, 默认false
  poolConfig.setTestOnBorrow(false);
}

猜你喜欢

转载自www.cnblogs.com/SimpleWu/p/10003311.html