1. String
如果value为纯数字可以当number用
2. List
3. Hash
4. Set
5. sorted-set
1. 添加信息
set key value
一次存取多个:
mset key1 val1 key2 val2 key3 val3 ...
2. 信息查询
get key
一次存取多个:
mget key1 key2 key3 ...
3. 清屏
clear
4. 查看帮助
help <comment>
help @<group> // 输入help后接一个空格,使用tab生成group名
5. 退出
1. quit
2. exit
3. <esc> // 慎用
6. 删除
del key
String 操作
2.1 查看String值的长度
strlen key
2.2 追加内容
append key val
// 当该值不存在时会新建一给内容
2.3 数字类型的扩展操作
// 1. 增加
incr key // 相当于自增 key ++
// 给key增加给定的值
incrby key increment // 如:incrby num 3
// 给可以指定增加浮点型数据
incrbyfloat key increment // 如:incrbyfloat num 10.5
// 2. 减小
//自减
decr key //相当于 key --
// 给定减小的值
decrby key increment // 如:decrby num 3
// 减指定的浮点型数据
decrbyfloat key increment
2.4 给数据设置指定的生命周期
// 给数据指定秒为单位的生命时间
setex key second value
// 给数据指定毫秒为单位的生命时间
psetex millonSecond value
2.5 String命名解决方案
// 例如微博大V的博客数量
1. user:id:idCount:blog:num
age: set user:id:1571785241:blog 100
2. 存储json字符串
age: set user:id:1571785241 {name:ljb,tel:15717085241}
2.6 key的设置约定
key置常用以下方式设置
// 表名:主键名:主键值:属性名
age: order:orderiid:123582845844:price
hash 数据类型
hash 可类似看作为java中的hashmap
也可以看作redis中的小redis
- 新的存储需求:对一系列的数据进行编组,方便管理,典型应用存储对象信息
- 需求的存储结构:一个存储空间保存多个键值对数据
- hash 类型:底层使用hash表结构实现数据保存
当filed数量较少时:存储结构优化为类数组结构、数据较多时使用hashmap
3.1 hash数据的添加修改
// 单个设置或修改
hset key filed value
// 多个修改或设置
hmset key filed1 value filed2 values...
3.2 hash数据的获取
// 获取单个属性的值
hget key filed
//获取多个属性的值
hmget key filed1 filed2 ...
// 获取所有属性的值
hgetall key
3.3 删除数据
hdel key filed1 [filed2] ...
3.4 获取字段表中字段的数量
hlen key
3.5 获取哈希表中是否存在指定的值
hexists key field
3.6 获取hash中的所有键和值
// 获取所有key
hkeys key
// 获取所有values
hvals key
3.7 hash数据中数字型的增长
// 指定整型数据
hincrby key field increment
// 指定浮点型数据
hincrbyflaot key field increment
// hash不提供减小操作,当要减小时使用
hincrby key field -increment
注:
- hash 类型下的value只能存字符串,,不允许存储其他数据类型,不存在嵌套现象、如果数据未获取到,对应的值为 nil
- 每个hash可以存储 232 - 1 个键值对
- hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存在大量对象而设计的,不可滥用hash,更不可将hash作为对象列表使用
- hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会很低,有可能成为数据访问的瓶颈
- 8 hash 的应用场景
电商网站的购物车的实现
在购物车中:
将用户作为key
// cart:id:0000
将商品id作为field
// 商品编号
以商品对应的数量为value
3.9 判断后设置
// 先判断是否有该key,是否有该field,如果有返回0,否则返回1
hsetnx key filed value
List 数据结构
4.1 添加、修改数据
// 向链表左边添加数据
lpush key value1 [value2] ...
// 向链表右边添加数据
rpush key value1 [value2]...
4.2 获取数据
// 获取范围内的数据
lrange key start stop // 当不知道list的集合时可使用 -1 代替最大值
age:lrange list01 0 -1
// 获取索引指向的数据
lindex key index
4.3 获取并移除数据
lpop key // 获取并移除左边第一个数据
rpop key // 获取并移除右边第一个数据
4.4 规定时间内获取并移除数据
在规定时间内如果有则获取并移除,如果没有则不做处理
blpop key1 [key2] timeout
brpop key1 [key2] timeout
4.5 获取并移除指定的元素
lrem key count value
注
- list 中保存的是String类型的数据,数据总容量是有限的,最多 232 - 1 个元素
- list 具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈的操作
- 获取全部数据操作时的结束索引为 -1
- list 可以对数据进行分页操作,通常第一页的数据来自于 redis 的list中 ,而第二页及更多来自于数据库
set 类型
set 类型的基本操作
5.1 向set 添加数据
sadd key member1 [member2] ...
5.2 获取set 里的全部数据
smembers key
5.3 删除数据
srem key member1 [member2] ...
5.4 获取集合内的数据总数
scard key
5.6 判断集合内是否有指定的元素
sismember key member
5.7 随机获取集合中指定数量的数据
srandmenber key [count]
5.8 随机获取并移除集合中的数据
spop key
5.9 set 数据交并差集
// 两个集合的交集
sinter key1 [key2]
// 两个集合的并集
sunion key1 [key2]
// 两个集合的差集
sidff key1 [key2]
将交并差集存储到指定集合中
// 保存两个集合的交集
sinterstore destination key1 [key2]
// 保存两个集合的并集
sunionstore destination key1 [key2]
// 保存两个集合的差集
sidff store destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source destination member
注:
- set 不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份,之后添加的结果都是false
- set 虽然与hash的存储结构类似,但是无法启用hash中存储值的空间
sorted_set
- 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
- 需要的存储结构:新的存储模型,可以保存可排序的数据
- sorted_set类型:在set 的存储结构基础上添加可排序字段
6.1 添加数据到sorted_set中
zadd key scores1 member1 [scores2 member2]
6.2 获取数据
[winthscores] 带排序值
// 获取全部数据,数据由小到大
zrange key start storp [withscores]
// 获取全部数据,数据由大到小
zrevrange key start stop [winthscores]
// 按条件获取数据,数据由小到大
zrangebyscore key min max [WITHSCORES] [LIMIT]
// 按条件获取数据,数据由大到小
zreverangebyscore key max min [WITHSCORES]
6.3 删除数据
// 删除指定数据
zrem key member [member ... ]
// 删除符合条件的数据
zremrangebyrank key start stop
// 删除 min - max 的数据
zremrangebyscore key min max
6.4 获取集合内数据总量
// 数据总量
zcard key
// 范围内数据量
zcount key min max
6.5 集合交、并集操作
// 交集
zinterstore destination numkeys key [key ...]
// 并集
zunionstore destination numkeys key [key ...]
6.6 获取数据排名
// 正向获取,有小到大额
zrank key member
// 反向排序
zrevrank key member
score值获取与修改
// 获取score
zscore key member
// 增加score
zincrby key increment member
注:
- score 保存的数据存储空间是 64 位
- score 保存的数据可以是 double值,因计算机double描述问题,可能会失精度,慎用
- 数据不能重复,如果重复添加相同的数据,score会被反骨覆盖。保留最后一次天添加的值
网友评论