1. Redis整体的技术全景
-
应用场景:数据结构的应用、缓存应用、集群应用
-
底层原理:线程模型、主从复制、负载均衡
数据结构、哨兵机制、数据分片
AOF、 RDB
2. 并发承载
- redis(官方 10w/s)
- 数据库->mysql 并发范围:写:600/s 读 2000/s
3. Redis的基本数据类型
基本数据类型:string、hash、list、set、zset。
3.1 string类型
-
setnx 不存在才set
set a 1 nx
-
setxx 存在才set
set b 2 xx
-
mset 批量set
mset a 1 b 2 c 3
-
mget 批量获取
mget a b c d
-
incr incr-key 自增值
set incr-key 1
incr incr-key
-
decr incr-key 自减
decr incr-key
-
getset hello hello 获取到旧的值
set hello 1
getset hello newvalue
此时返回的是1,但是hello已经被设置成newvalue -
setrange hello 5 x 将hello 第5的位置设置成x
-
getrange hello 1 4 获取范围
3.2 hash类型
可以用于存储关系型数据库的二维表结构的数据。
-
hset user:1 name li 在user:1的数据上存储了name:li的值
-
hset user:1 age 24
-
hmset user:2 name zhang age 18 批量设置
-
hsetnx user:1 name li
-
hget user:1 name 拿到user:1数据上的name对应的值
-
hmget user:1 name age
-
hlen user:1 取出长度数据
-
hvals user:1 取出所有的key的值
-
hkeys user:1 取出所哟key的名称
-
hgetall user:1 取出所有key value
-
hincrby user:1 id 2 自增内部字段的值
3.3 list类型
存储最多的元素个数:2的32次方-1个(4294967296)
有序的元素。
- rpush demolist a 向右边插入一个值
- lpush demolist b 向左边插入一个值
- lrange demolist 0 -1 取出list的所有值列表
- lpop demolist 2 弹出元素右边两个(不传入参数则默认为一个)元素
- lrem demolist 2 y 从作向右删除2个y
- ltrim demolist 0 1 保留0-1位置的值
- lset demolist 1 xx 将1位置值改成xx
- lindex demolist 1 取出1位置的值
- llen demolist list的长度
应用场景可以是:文章列表,做分页有序,支持范围的业务。
3.4 set类型
没有重复的数据集合
- sadd demoset a b c d e f d d 添加后会进行去重
- smembers demoset 查看集合所有值
- srem demoset c d 删除指定值
- smemebers demoset a 查询元素是否存在
- scard demoset 查存在多少个元素
- srandmember demoset 随机返回一个元素
- spop demoset 弹出一个元素
- del demoset 删除key
- sinter set1 set2 求并集
- sunion set1 set2 求交集
- sdiff set1 set2 求差集
- sinterstore interset set1 set2 将交集结果存在interset(set)中
应用场景:打标签,生成随机数这样的场景。
3.5 zset类型
结构是key :二维的score、member表格存储的值
-
zadd zset 90 lisi
-
zadd zset 95 wangwu
-
zadd zet 100 zhangsan
-
zcard zset 查看值多少条记录
-
zscore zset lisi 查看lisi的分数
-
zrank zset lisi 查看lisi的排名
-
zrevrank zset lisi 反转排序取出lisi的排名
-
zincrby zset 6 lisi 将lisi的分数增加6分
-
zrange zset 0 1 withscores 获取到按照升序、排名前二的姓名和成绩
-
zrevrange zset 0 1 withscores 反转获取到降序、排名前二的姓名和成绩
-
zrangebyscore zset 96 100 分数范围查询
应用场景:求平均成绩
- zinterstore zsetavg 2 set1 set2 weights 0.5 0.5
- zrange zsetavg 0 -1 withscores