Redis系列笔记之 —— 键

单位秒。

  1. 设置 key 的过期时间以毫秒计

PEXPIRE key milliseconds

  1. 和 EXPIRE 类似

EXPIREAT key timestamp

EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

  1. 和 EXPIRE 类似

PEXPIREAT key milliseconds-timestamp

设置 key 过期时间的时间戳(unix timestamp) 以毫秒计

  1. 移除过期时间

PERSIST key

移除 key 的过期时间,key 将持久保持。

注意,使用SETGETSET命令为键赋值,也会同时清除键的过期时间。

但是只对键值操作的命令,如(RPUSH、INCR、HSET、ZREM)

  1. 返回剩余的生存时间。

TTL key

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

  1. 和TTL类似

PTTL key

毫秒为单位返回 key 的剩余的过期时间。

[](()其他命令


  1. 修改 key 的名称

RENAME key newkey

  1. 仅当 newkey 不存在时,将 key 改名为 newkey 。

RENAMENX key newkey

  1. 从当前数据库中随机返回一个 key

RANDOMKEY

  1. 将当前数据库的 key 移动到给定的数据库 db 当中

MOVE key db

  1. 清除某个数据库的数据

FLUSHDB

  1. 清除Redis所有数据

FLUSHALL

[](()数据类型

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

[](()字符串(string)


[](()性质

  • string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

  • string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象

  • string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

[](()操作命令

  • 取值赋值

SET key value

GET key

  • 递增递减数字

当存储的字符串是整数形式时,可以使用INCR命令自增1,并返回自增后的值。

(当键不存在时,默认从0开始自增,所 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 以第一次返回值为 1 )。

INCR num

返回:1

INCR num

返回:2

如果给非整数类型的值,如浮点值、字符串,使用INCR命令,会报错。

如:

127.0.0.1:6379[1]> GET s

“helloworld”

127.0.0.1:6379[1]> INCR s

(error) ERR value is not an integer or out of range

指定增量

INCRBY key increment

同样的,也有减少命令

DECR key

DECR key decrement

  • 浮点数的增加

INCRBYFLOAT key increment

但没有对应的减少命令。

  • 向尾部追加值

APPEND key value

  • 获取字符串长度

STRLEN key

  • 同时获得/得到多个键值

MGET key [key …]

MSET key value [key1 value1 …]

  • 位操作

暂略。

以下的数据类型都不能支持嵌套。

[](()散列(hash)


[](()特点

  • Redis hash 是一个键值(key=>value)对集合

  • 键值的类型只能是字符串,也就是说不能去嵌套其他类型。

  • hash 特别适合用于存储对象

  • 一个散列类型的键最多只能包含 2 32 − 1 2^{32}-1 232−1(40亿多)个字段。

[](()操作命令

  • 赋值、取值

HSET key field value

HGET key field

注:HSET命令不区分插入还是更新操作,插入操返回1,更新返回0;

HMSET key field1 value1 field2 value2 [filed3 value3]

HMGET key field1 field2 [field3]

如果不知道散列类型的键对应的值有哪些字段,可以使用:

HGETALL

  • 只获取字段名字段值

HKEYS key

HVALS key

  • 只获取字段数量

返回字段的数量。

HLEN key

示例:

127.0.0.1:6379> HSET car price 50000

(integer) 1

127.0.0.1:6379> HMSET car kind bmw color white

OK

127.0.0.1:6379> HGET car price

“50000”

127.0.0.1:6379> HMGET car kind color

  1. “bmw”

  2. “white”

127.0.0.1:6379> HGETALL car

  1. “price”

  2. “50000”

  3. “kind”

  4. “bmw”

  5. “color”

  6. “white”

  • 判断字段是否存在

HEXISTS key field

  • 当字段不存在时赋值

(NX表示not exists)

HSETNX key field value

值得一提的是,这个命令也是一个原子操作,不需要担心静态条件。

  • 增加数字

HINCRBY key filed increment

(散列类型没有HINCR命令)

  • 删除字段

HDEL key field [field1 ……]

返回成功的删除字段的个数。

[](()列表


[](()特点

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

列表类型的内部使用双向链表,所以在链表两端添加元素的时间复杂度为O(1)。

自然,在链表两端查询元素都是很快的。

[](()操作命令

  • 向列表两端添加元素

// 从左边添加(头部)

LPUSH key val [val1 ……]

// 从右边添加(尾部)

RPUSH key val [val1 ……]

  • 向列表两端弹出元素

LPOP key

RPOP key

  • 获取列表中元素的个数

LLEN

当键不存在时,返回0;

  • 获得列表片段

两个注意点,① 索引从0开始, ② 左右都是闭区间

LRANGE key start end

并且支持负索引,表示从右边开始计数。

如-1表示右边第一个,-2表示右边第二个。

两个情况

① start的位置在stop的后面,返回空列表

② stop的位置大于实际的索引范围,则返回到列表最右边的元素。

  • 删除列表中指定的值

REM为remove的缩写

LREM key count value

删除前count个值value的元素。

注意

① count为0时,删除所有

②count为负,仍然删除前|count|个。

返回的是实际删除的元素的个数

  • 获得/修改制定索引的元素值

LINDEX key index

LSET KEY index value

注意:索引从0开始

  • 只保留指定阶段

只保留[start,end]的元素,其余的元素删除。

LTRIM key start end

  • 将元素从一个列表转到另一个列表

将第一个列表的元素从右边弹出,从左边添加进第二的列表。

RPOPLPUSH source destination

[](()集合


[](()特点

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表 hash table实现的,所以添加,删除,查找的复杂度基本上是 O(1)的。

集合中最大的成员数为 2 32 − 1 2^{32}- 1 232−1 (4294967295, 每个集合可存储40多亿个成员)。

[](()操作命令

  • 增加/删除元素

SADD key member [member …]

SREM key member [member …]

返回是成功添加、删除的元素的个数。

  • 获得集合的所有元素

SMEMBERS

  • 判断元素是否在集合中

SISMEMBER key member

时间复杂度为O(1)。当值存在时返回1,否则返回0。

  1. 集合的交

intersection: 交集

SINTER setA setB setC

  1. 集合的并

union:并集

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值