写点什么

Redis 笔记之 Java 操作 Redis(Jedis),springcloud 实战 pdf

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:3846 字

    阅读完需:约 13 分钟

  • 可用版本: >= 1.0.0

  • 返回值: 被删除 key 的数量。


EXISTS 指令


  • 语法: EXISTS key

  • 作用: 检查给定 key 是否存在。

  • 可用版本: >= 1.0.0

  • 返回值: 若 key 存在,返回 1 ,否则返回 0。


EXPIRE 指令


  • 语法: EXPIRE key seconds

  • 作用: 为给定 key 设置生存时间(秒),当 key 过期时(生存时间为 0),它会被自动删除。

  • 可用版本: >= 1.0.0

  • 时间复杂度: O(1)

  • 返回值:设置成功返回 1 。


KEYS 指令


  • 语法 : KEYS pattern

  • 作用 : 查找所有符合给定模式 pattern 的 key 。

  • 语法:


KEYS *:匹配数据库中所有 key 。


KEYS h?llo:匹配 hello ,hallo 和 hxllo 等。


KEYS h*llo:匹配 hllo 和 heeeeello 等。


KEYS h[ae]llo: 匹配 hello 和 hallo ,但不匹配 hillo 。特殊符号用 \ 隔开


  • 可用版本: >= 1.0.0

  • 返回值: 符合给定模式的 key 列表。


MOVE 指令


  • 语法 : MOVE key db

  • 作用 : 将当前数据库的 key 移动到给定的数据库 db 当中。

  • 可用版本: >= 1.0.0

  • 返回值: 移动成功返回 1 ,失败则返回 0 。


PEXPIRE 指令


  • 语法 : PEXPIRE key milliseconds

  • 作用 : 这个命令和 EXPIRE 命令的作用类似,但是它以 毫秒 为单位设置 key 的生存时间


EXPIRE 以秒为单位)


  • 可用版本: >= 2.6.0

  • 时间复杂度: O(1)

  • 返回值:设置成功,返回 1。key 不存在或设置失败,返回 0


PEXPIREAT 指令


  • 语法 : PEXPIREAT key milliseconds-timestamp

  • 作用 : 这个命令和 EXPIREAT 命令类似,但它以 毫秒 为单位设置 key 的过期 unix 时间戳(EXPIREAT 以秒为单位)

  • 可用版本: >= 2.6.0

  • 返回值:如果生存时间设置成功,返回 1 。当 key 不存在或没办法设置生存时间时,返回 0 。


(查看 EXPIRE 命令获取更多信息)


TTL 指令


  • 语法 : TTL key

  • 作用 : 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

  • 可用版本: >= 1.0.0

  • 返回值:


当 key 不存在时,返回 -2 。


当 key 存在但没有设置剩余生存时间时,返回 -1 。


否则,以秒为单位,返回 key 的剩余生存时间。


  • Note : Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。


PTTL 指令


  • 语法 : PTTL key

  • 作用 : 这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间


(TTL 以秒为单位)


  • 可用版本: >= 2.6.0

  • 返回值: 当 key 不存在时,返回 -2 。当 key 存在但没有设置剩余生存时间时,返回 -1 。

  • 否则,以毫秒为单位,返回 key 的剩余生存时间。

  • 注意 : Redis 2.8 以前,当 key 不存在


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


,或者 key 没有设置剩余生存时间时,命令都返回 -1 。


RANDOMKEY 指令


  • 语法 : RANDOMKEY

  • 作用 : 从当前数据库中随机返回(不删除) 一个 key 。

  • 可用版本: >= 1.0.0

  • 返回值:当数据库不为空时,返回一个 key 。当数据库为空时,返回 nil


RENAME 指令


  • 语法 : RENAME key newkey

  • 作用 : 将 key 改名为 newkey 。


当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。


当 newkey 已经存在时,RENAME 命令将覆盖旧值。


  • 可用版本: >= 1.0.0

  • 返回值: 改名成功时提示 OK ,失败时候返回一个错误。


TYPE 指令


  • 语法 : TYPE key

  • 作用 : 返回 key 所储存的值的类型。

  • 可用版本: >= 1.0.0

  • 返回值:


none:key 不存在


string:字符串


list:列表


set:集合


zset:有序集


hash:哈希表


public class TestKeys {


private Jedis jedis;


@Before


public void before() {


// 连接开启了 redis 服务的虚拟机


jedis = new Jedis("192.168.3.65", 6379);


}


@After


public void after() {


jedis.close();


}


@Test


public void testKeys() {


// 删除一个 key


jedis.del("name");


// 删除多个 key


jedis.del("name", "age");


// 设置一个 key


jedis.set("age", "hello");


// 判断一个 key 是否存在


Boolean name = jedis.exists("name");


System.out.println(name);


// 设置一个 key 超时时间


Long age = jedis.expire("age", 100);


System.out.println(age);


// 获取一个 key 超时时间


Long ttl = jedis.ttl("age");


System.out.println(ttl);


// 随机获取一个 key


String s = jedis.randomKey();


// 修改 key 名称


jedis.rename("age", "newage");


// 查看对应值的类型


String type1 = jedis.type("name");


System.out.println(type1);


String type2 = jedis.type("maps");


System.out.println(type2);


}


}


操作 String 相关 API


===================================================================================


| 命令 | 说明 |


| --- | --- |


| set | 设置一个 key/value |


| get | 根据 key 获得对应的 value |


| mset | 一次设置多个 key value |


| mget | 一次获得多个 key 的 value |


| getset | 获得原始 key 的值,同时设置新值 |


| strlen | 获得对应 key 存储 value 的长度 |


| append | 为对应 key 的 value 追加内容 |


| getrange 索引 0 开始 | 截取 value 的内容 |


| setex | 设置一个 key 存活的有效期(秒) |


| psetex | 设置一个 key 存活的有效期(毫秒) |


| setnx | 存在不做任何操作,不存在添加 |


| msetnx 原子操作(只要有一个存在不做任何操作) | 可以同时设置多个 key,只要有一个存在都不保存 |


| decr | 进行数值类型的-1 操作 |


| decrby | 根据提供的数据进行减法操作 |


| incr | 进行数值类型的+1 操作 |


| incrby | 根据提供的数据进行加法操作 |


| incrbyfloat | 根据提供的数据加入浮点数 |


public class TestString {


private Jedis jedis;


@Before


public void before() {


jedis = new Jedis("192.168.3.65", 6379);


}


@After


public void after() {


jedis.close();


}


@Test


public void testString() {


jedis.set("name", "zhenyu"); // set


String name = jedis.get("name"); // get


System.out.println(name);


jedis.mset("content", "好人", "address", "苏州市"); // mset


List<String> mget = jedis.mget("name", "content", "address"); // mget


mget.forEach(v -> System.out.println("v = " + v));


String set = jedis.getSet("name", "yusael");


System.out.println(set);


// ...


}


}


操作 List 相关 API


=================================================================================


| 命令 | 说明 |


| --- | --- |


| lpush | 将某个值加入到一个 key 列表头部 |


| lpushx | 同 lpush,但是必须要保证这个 key 存在 |


| rpush | 将某个值加入到一个 key 列表末尾 |


| rpushx | 同 rpush,但是必须要保证这个 key 存在 |


| lpop | 返回和移除列表左边的第一个元素 |


| rpop | 返回和移除列表右边的第一个元素 |


| lrange | 获取某一个下标区间内的元素 |


| llen | 获取列表元素个数 |


| lset | 设置某一个指定索引的值(索引必须存在) |


| lindex | 获取某一个指定索引位置的元素 |


| lrem | 删除重复元素 |


| ltrim | 保留列表中特定区间内的元素 |


| linsert | 在某一个元素之前,之后插入新元素 |


public class TestList {


private Jedis jedis;


@Before


public void before() {


jedis = new Jedis("192.168.3.65", 6379);


}


@After


public void after() {


jedis.close();


}


@Test


public void testList() {


jedis.flushDB(); // 清除当前数据库


jedis.lpush("names1", "1", "2", "3", "4", "5"); // lpush


jedis.rpush("names1", "a", "b", "c", "d", "e"); // rpush


List<String> names1 = jedis.lrange("names1", 0, -1);


names1.forEach(v -> System.out.println("name = " + v));


String name = jedis.lpop("names1"); // lpop rpop


System.out.println(name); // 5


System.out.println(jedis.llen("names1")); // llen


// names1 中 2 左边插入一个 world


Long linsert = jedis.linsert("names1", BinaryClient.LIST_POSITION.BEFORE, "2", "world");// linsert


System.out.println("linsert: " + linsert);


names1 = jedis.lrange("names1", 0, -1);


names1.forEach(v -> System.out.println("name = " + v));


// ...


}


}


操作 Set 的相关 API


=================================================================================


| 命令 | 说明 |


| --- | --- |


| sadd | 为集合添加元素 |


| smembers | 显示集合中所有元素 无序 |


| scard | 返回集合中元素的个数 |


| spop | 随机返回一个元素 并将元素在集合中删除 |


| smove | 从一个集合中向另一个集合移动元素 必须是同一种类型 |


| srem | 从集合中删除一个元素 |


| sismember | 判断一个集合中是否含有这个元素 |


| srandmember | 随机返回元素 |


| sdiff | 去掉第一个集合中其它集合含有的相同元素 |


| sinter | 求交集 |


| sunion | 求和集 |


public class TestSet {


private Jedis jedis;


@Before


public void before() {


jedis = new Jedis("192.168.3.65", 6379);


}


@After


public void after() {


jedis.close();


}


@Test


public void testSet() {


jedis.sadd("names","zhangsan", "lisi");


Set<String> names = jedis.smembers("names");


names.forEach(v -> System.out.println("v = " + v));


Boolean sismember = jedis.sismember("names", "zhenyu");


System.out.println(sismember);


}


}


操作 ZSet 相关 API


=================================================================================


| 命令 | 说明 |


| --- | --- |


| zadd | 添加一个有序集合元素 |


| zcard | 返回集合的元素个数 |


| zrange 升序 zrevrange 降序 | 返回一个范围内的元素 |


| zrangebyscore | 按照分数查找一个范围内的元素 |


| zrank | 返回排名 |


| zrevrank | 倒序排名 |


| zscore | 显示某一个元素的分数 |


| zrem | 移除某一个元素 |


| zincrby | 给某个特定元素加分 |


public class TestZSet {


private Jedis jedis;


@Before

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Redis 笔记之 Java 操作 Redis(Jedis),springcloud实战pdf