Redis

Hash

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储字典数据。

插入哈希

# 设置单个 hset key field value 
127.0.0.1:6379> hset user:123 name jack 
(integer) 1
# 设置多个 hmset key field value [field2 value2]  # 同时将多个 field-value (域-值)对设置到哈希表中;
#键和字段存在时,属于更新
127.0.0.1:6379> hmset user:123 name xiaomi age 23 gender man # 存储用户123的个人信息{'name': 'xiaomi', 'age': 23, 'gender': '男'}
(integer) 3
​
hincrby key field increment  # 为哈希表 key 中的指定字段的整数值加上增量
127.0.0.1:6379> hincrby user:123 age 5  # 用户123的年龄加5岁
(integer) 24

查询哈希

hget key field #指定字段的值
127.0.0.1:6379> hget user:123 name
"xiaomi"
​
hgetall key # 获取所有字段和值
127.0.0.1:6379> hgetall user:123
1) "name"
2) "xiaomi"
3) "age"
4) "24"
5) "gender"
6) "man"
​
hkeys key  #获取所有的字段
hvals key   #获取所有的值

删除哈希

hdel key field1 [field2] # 删除一个或多个哈希字段, 返回删除的个数
127.0.0.1:6379> hdel user:123 gender # 用户123的性别
(integer) 1 

Hash类型练习

  1. 更新用户123 的购物车中id为3的商品数量

    127.0.0.1:6379> hincrby cart_123 3 5  # 有则新增,无则插入
    (integer) 5
    127.0.0.1:6379> hincrby cart_123 3 -2  # 有则新增,无则插入
    (integer) 3
  2. 修改用户123的购物车中id为3的商品数量为5个

    127.0.0.1:6379> hset cart_123 3 5  # 更新
    (integer) 1
  3. 获取用户123的所有购物车数据

    127.0.0.1:6379> hgetall cart_123
    1) "3"  # 商品id为3
    2) "5"  # 5个商品
  4. 删除用户123的购物车中id为3的商品

    127.0.0.1:6379> hdel cart_123 3
    (integer) 1

设置过期时间

#1 10s过期
set name jack ex 10
#2 
set name jack
expire name 10 -->10s
pexpire name 10 -->10ms
​
#查看多久过期
ttl name
-->返回-2 key不存在
-->返回-1 key存在,但没有过期时间
-->返回具体时间,剩余过期时间
​
#设置永不过期
persist name

String类型的练习

  1. 存储生成的短信验证码,方便下次验证,注意:短信验证码的有效期为10分钟

    127.0.0.1:6379> set sms_code:1731111111 637905 EX 300  # 存储 1731111111该手机号的短信验证码 637905, 过期时间是5分钟
  2. 存储标志,防止短信验证码发送过于频繁,1分内只能发送一次

    127.0.0.1:6379> set sms_code_flag:1731111111  1  EX 60  # 存储 1731111111该手机号是否发送短信验证码的标志, 过期时间是60s
  3. 取出短信验证码

    127.0.0.1:6379> get sms_code:1731111111 # 取出短信验证码,过期之后,取出为(nil)
    "637905"

List

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

类似: {name:[1,2,3,4,5,6,]}

插入列表

# 头插法
lpush key val1 val2 ...
127.0.0.1:6379> lpush numbers 1 2 3
(integer) 3
​
# 尾插法
127.0.0.1:6379> rpush numbers 8 9 0
(integer) 6

更新列表

# 修改某下标的值
lset key index val
127.0.0.1:6379> lset numbers 5 10  # 注意: redis中下标也是从0开始
OK

删除列表

# 头删法
lpop key # 删除第一个值, 并立即返回该值
127.0.0.1:6379> lpop numbers
"3"
​
# 尾删法
rpop key # 删除最后一个值, 并立即返回
127.0.0.1:6379> rpop numbers
"10"
​
#列表为空时,阻塞的删除
blpop  mylist  10
brpop mylist 10
​
# 删除指定的值
lrem key count value # 返回的是删除的个数
127.0.0.1:6379>lrem numbers 0 2  # 删除所有值为2的元素
(integer) 4
​
127.0.0.1:6379>lrem numbers -2 1  # 从表尾开始删除2个值为1的元素
(integer) 2
 
127.0.0.1:6379> lrem numbers 2 1  # 从表头开始删除2个值为1的元素
(integer) 2
​
# 截取数据
ltrim key start stop
127.0.0.1:6379> ltrim numbers 2 5  # 保留下标为 【2,5】之间的所有元素,删除其余元素
OK

查询列表

lrange key start stop # 返回指定区间内的内容
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "2"
3) "1"
​
llen key  #获取列表的长度

List类型练习

  1. 将id为1的商品存入用户173的历史记录中

    127.0.0.1:6379> lrem history:173 0 1  # 先移除 用户173历史记录中 所有id为1的商品记录
    (integer) 0
    ​
    127.0.0.1:6379> lpush history:173 1 # 将 id为1的商品存入 用户173的历史记录中
    (integer) 1
    ​
    127.0.0.1:6379> ltrim history:173 0 4  # 保留 历史记录中的前5条商品数据
    OK
  2. 查询用户173的历史记录

    127.0.0.1:6379> lrange history:173 0 -1  # 查询列表中的所有元素
    1) "1"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值