Redis基础类型常用操作命令
概念:Redis是用C语言开发的一个开源的高性能键值对数据库。
特征:
数据间没有必然的联系
内部采用单线程机制进行工作
高性能
多数据类型支持
字符串类型 String
列表类型 List
散列类型 Map
集合类型 Set
有序集合类型 SortedSet
持久化支持
应用场景为热点数据加速查询;如:热点商品、热点新闻、热点资讯等高访问量信息。
任务队列;如:秒杀、抢购、购票等。
即时信息查询;如:排行榜等。
时效性信息控制;如:验证码、投票控制等。
分布式数据共享;如:分布式架构中的session等。
消息队列
分布式锁
基础数据类型之: String单个string类型的存储空间为512MB
string基本操作
添加或修改数据
set key value
获取数据
get key
删除数据
del key
设置过期时间(默认单位为秒)
expire key second
追加信息到初始value后边
append key value
添加/修改多个数据
mset key1 value1 key2 value2...
获取多个数据
mget key1 key2 ...
获取字符串长度
strlen key
设置key的生命周期 控制生命周期
setex key seconds value (秒) psetex key millisexxonds value (毫秒)
key的设置约定
与数据库中的表-主键-字段一一对应
表名主键名主键值字段名eg1 order id 443523454 name
eg2 equire id 435432543 type
eg3 news id 45435454 title
基础数据类型之:Hash
存储需求: 对一系列存储的数据进行编排,方便管理,典型应用存储对象信息
存储结构:一个存储空间存储多个键值对数据
hash类型:底层使用哈希表结构实现数据存储
hash存储结构优化
如果field数量较少,存储结构优化为类数组结构
如果field数量较多,存储结构使用HashMap结构
hash类型基本操作
添加/修改数据
hset key field value
获取数据
hget key field hgetall key
删除数据
hdel key field [field2 ...]
添加或删除多个数据
hmset key field1 value1 field2 value2 ...
获取多个数据
hmget key field1 field2 ...
获取hash表中的字段的数量
hlen key
获取hash表中是否存在指定的字段
hexists key field
获取哈希表中所用的字段名或字段值
hkeys key hvalues key
设置指定字段的数值数据增加指定范围的值
hincrby key field increment hincrbyfloat key field increment
如果key值下的field存在则不做操作 不存在则添加进去
hsetnx key field value hash类型数据操作的注意事项
hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象,如果数据未获取到,对应的值为(nil)
每个hash存储的键值对上限为
$$
2^{32}-1
$$
个键值对
hash类型十分贴近对象的存储形式,并且可以灵活删除对象属性。但hash设计初衷并不是为了存储大量对象而设计的,切记不可滥用,更不可将hash作为对象列表使用
hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率会很低,有可能会成为数据访问瓶颈
应用场景电商网站购物车设计实现
基础数据类型之:list数据存储需求:存储多个数据,并对数据进入存储Jon关键的顺序进行区分
需要的存储结构:一个存储空间存储多个数据,并且数据可以体现进入顺序
list类型:保存多个数据,底层使用双向链表存储结构实现
list类型是双向链表存储的
list基本操作
添加/修改数据
lpush key value1 value2 [value3] ... //从list链表左侧添加 rpush key value1 value2 [value3] ... //从list右侧添加
获取数据
lrange key start stop //指定链表起始结束位置中的value //在获取未知长的的list类型的时候,想查看所有的value可以使用 -1表示倒数第一个 lrange key start -1 lindex key index //获取链表中指定位置的值 llen key //获取链表的长度
获取并移除数据
lpop key rpop key