Redis数据类型选择和应用场景

Redis是一个Key-Value的存储系统,使用ANSI C语言编写。

key的类型是字符串。

value的数据类型有:

  • 常见
    • string字符串类型、
    • list列表类型、
    • set集合类型、
    • sortedset(zset)有序集合类型、
    • hash类型。
  • 不常见的
    • bitmap位图类型
    • geo地理位置类型。
    • Redis5.0新增一种:stream类型

注意:Redis中命令是忽略大小写,(set SET),key是不忽略大小写的 (NAME name)

1、Redis的Key的设计

  1. :分割
  2. 把表名转换为key前缀, 比如: user:
  3. 第二段放置主键值
  4. 第三段放置列名

比如:用户表user, 转换为redis的key-value存储

userid username password email
9 Tom 1234 [email protected]
  • username 的 key: user:9:username
  • {userid:9,username:Tom}
  • email的key user:9:email
  • 表示明确:看key知道意思
  • 不易被覆盖

2、string字符串类型

Redis的String能表达3种值的类型:字符串、整数、浮点数 100.01 是个六位的串

常见操作命令如下表:

命令名称 命令格式 命令描述
set set key value 赋值
get get key 取值
getset getset key value 取值并赋值
setnx setnx key value 当key不存在时才用赋值set key value NX PX 3000 原子操作,px 设置毫秒数
append append key value 向尾部追加值
strlen strlen key 获取字符串长度
incr incr key 递增数字
incrby incrby key increment 增加指定的整数
decr decr key 递减数字
decrby decrby key decrement 减少指定的整数

应用场景:

  • key和命令是字符串
  • 普通的赋值
  • incr用于乐观锁

    incr:递增数字,可用于实现乐观锁 watch(事务)

  • setnx用于分布式锁

    当value不存在时采用赋值,可用于实现分布式锁

举例:

127.0.0.1:6379> setnx name zhangf #如果name不存在赋值
(integer) 1
127.0.0.1:6379> setnx name zhaoyun #再次赋值失败
(integer) 0
127.0.0.1:6379> get name
"zhangf"


127.0.0.1:6379> set age 18 NX PX 10000 #如果不存在赋值 有效期10秒
OK
127.0.0.1:6379> set age 20 NX #赋值失败
(nil)
127.0.0.1:6379> get age #age失效
(nil)
127.0.0.1:6379> set age 30 NX PX 10000 #赋值成功
OK
127.0.0.1:6379> get age
"30"

2、list列表类型

  • list列表类型可以存储有序、可重复的元素
  • 获取头部或尾部附近的记录是极快的
  • list的元素个数最多为2^32-1个(40亿)

常见操作命令如下表:

命令名称 命令格式 命令描述
lpush lpush key v1 v2 v3 ... 从左侧插入列表
lpop lpop key 从列表左侧取出
rpush rpush key v1 v2 v3 ... 从右侧插入列表
rpop rpop key 从列表右侧取出
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值