了解一下Redis API和怎么使用它(上)

amang2000
发布于 2022-4-30 19:24
浏览
1收藏

作者 | 川石信息
来源 | 今日头条

(一)、全局命令

Redis常见全局命令有以下几种:

1.查看所有键

keys * 

2.键总数

dbsize

3.检查键是否存在

如果键存在则返回1,不存在则返回0

exists key 

4.删除键

del key [key ...] 

5.键过期

expire key seconds  

TTL命令会返回键的剩余过期时间,它有3种返回值:

  1. 大于等于0的整数:键剩余的过期时间。
  2. -1:键没设置过期时间。
  3. -2:键不存在

(二)、字符串

1.设置值了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

除了set选项,Redis还提供了setex和setnx两个命令:

它们的作用和ex和nx选项是一样的。下面的例子说明了set、setnx、setxx的区别。

setnx和setxx在实际使用中有什么应用场景吗?以setnx命令为例子,由于Redis的单线程命令处理机制,如果有多个客户端同时执行setnx key value,根据setnx的特性只有一个客户端能设置成功,setnx可以作为分布式锁的一种实现方案。

典型场景:

如果没有从Redis获取到用户信息,需要从MySQL中进行获取,并将结果回写到Redis,添加1小时(3600秒)过期时间。了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

2.获取值

get key

3.批量设置值

mset key value [key value ...] 

4.批量获取值

mget key [key ...]

5.计数了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

典型场景:

例如笔者所在团队的视频播放数系统就是使用Redis作为视频播放数计数的基础组件,用户每播放一次视频,相应的视频播放数就会自增1。

long incrVideoCounter(long id) { 
key = "video:playCount:" + id; 
return redis.incr(key); 
}

很多应用出于安全的考虑,会在每次进行登录时,让用户输入手机验证码,从而确定是否是用户本人。

但是为了短信接口不被频繁访问,会限制用户每分钟获取验证码的频率,例如一分钟不能超过5次。了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

上面是一种常用命令,下面是一些不常用命令:

1.追加值

append key value

2.字符串长度

strlen key

3.设置并返回原值

getset key value

4.设置指定位置的字符了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

5.获取部分字符串

getrange key start end 
127.0.0.1:6379> getrange redis 0 1 "be" 

(三)、哈希

1.设置值

hset key field value 
127.0.0.1:6379> hset user:1 name tom 
(integer) 1

2.获取值

hget key field 
127.0.0.1:6379> hget user:1 name 
"tom"

3.删除field了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

4.计算field个数

hlen key 
127.0.0.1:6379> hlen user:1 
(integer) 3

5.批量设置或获取field-value

 了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

6.判断field是否存在

hexists key field 
127.0.0.1:6379> hexists user:1 name 
(integer) 1

7.获取所有field

hkeys key 
127.0.0.1:6379> hkeys user:1
1) "name" 
2) "age" 
3) "city"

8.获取所有value

hvals key 
127.0.0.1:6379> hvals user:1 
1) "mike" 
2) "12" 
3) "tianjin"

9.获取所有field-value了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

10.hincrby hincrbyfloat

hincrby key field 
hincrbyfloat key field

hincrby和hincrbyfloat,就像incrby和incrbyfloat命令一样,但是它们的作用域是filed。

11.计算value的字符串长度

hstrlen key field 
127.0.0.1:6379> hstrlen user:1 name 
(integer) 3

哈希数据类型一般用于存储用户信息。了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区哈希存储结构了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

了解一下Redis API和怎么使用它(上)-鸿蒙开发者社区

1.原生字符串类型:每个属性一个键

set user:1:name tom 
set user:1:age 23 
set user:1:city beijing

优点:简单直观,每个属性都支持更新操作。

缺点:占用过多的键,内存占用量较大,同时用户信息内聚性比较差,所以此种方案一般不会在生产环境使用。

2.序列化字符串类型:将用户信息序列化后用一个键保存

set user:1 serialize(userInfo)

优点:简化编程,如果合理的使用序列化可以提高内存的使用效率。

缺点:序列化和反序列化有一定的开销,同时每次更新属性都需要把全部数据取出进行反序列化,更新后再序列化到Redis中。

3.哈希类型:每个用户属性使用一对field-value,但是只用一个键保存

hmset user:1 name tomage 23 city beijing

优点:简单直观,如果使用合理可以减少内存空间的使用。

缺点:要控制哈希在ziplist和hashtable两种内部编码的转换,hashtable会消耗更多内存。

标签
1
收藏 1
回复
举报
1条回复
按时间正序
/
按时间倒序
OwenZhang3
OwenZhang3

写的很全,收藏了

回复
2023-5-23 18:04:55
回复
    相关推荐