①-string类型
1.设置value
set username guoqf_online
2.获取value
get username
3.incr做自增操作,可以对某个key的value进行+1的操作
set age 20
incr age
get age
结果:21
4.decr做自减操作,可以对某个key的value进行-1操作
set age 20
decr age
get age
结果:19
5.incrby指定自增的数字
set age 20
incrby age 20
get age
结果:40
6.decrby指定自减的数字
set age 20
decrby age 20
get age
结果:0
7.keys 获取redis里面所有的key
keys *
②-一般redis的key是如何设计的?
思考:原先在mysql里面数据是如何存储的?
答:使用it_user表(行和列的组合)
如果需要把上面mysql里面的表里面的数据存储redis里面,存储的key该如何设计?
答:分如下几步来操作:
a. 把mysql里面的表名获取redis里面的key的前缀(it_user前缀)
b. 把mysql表里面的主键名称放在上面的前缀后面,一般使用冒号分割(it_user:id)
c. 对应记录的主键值做key的第三步(it_user:id:1)
d.把mysql里面的其他的字段作为key的第四部分(it_user:id:1:username)
把上面mysql表里面的记录保存在redis:
set it_user:id:1:username asion 设置key
get it_user:id:1:username 获取value
keys it_user:id:1* 获取用户的其他字段信息
③-hash类型
redis里面的hash类型有点类似php里面的数组
1.hset 设置单个值
2.hget 获取值
3.hmset 设置多个值
4.hmsetall 获取hash全部的值
④-list类型
redis里面的list类型被称为链表类型的概图
1.lpush 向链表的头部放入数据
2.rpush 向链表的尾部放入数据
3.lrange 获取链表里面的数据
4.lpop在链表的左侧弹出第一个数据
5.rpop在链表的右侧弹出最后一个数据
链表数据结构在实际项目中有哪些地方可以使用?
例如,现在后台要统计一下最近登录的10个用户。
如果现在使用mysql来完成,形成这条sql来查询数据:
sql: select * from user order by logintime desc limit 10;
换成redis里面的链表实现:
创建一个list类型,从链表的左侧加入最近登录的用户主键id;当里面的单元超过10个后,只需要把最右侧的那个单元弹出即可。
⑤-set类型
redis里面的 set类型 被称为 无序集合类型
集合是数学里面常见的一个概念,可以理解是一类数据的集合。
集合满足三个特点:
a. 无序性:集合里面的数据是没有顺序之分
b. 唯一性:集合里面的数据彼此是不能重复
c. 确定性:集合里面的数据的个数是确定
集合常见运算:
交集(A∩B):集合公共的部分;例如上面集合A和集合B的交集是 2
并集(A∪B):集合全部的部分;例如上面集合A和集合B的并集是 1 2 3
差集(A-B):A-B 代表的含义是元素在A里面出现,但是不能在B里面出现;例如上面集合A-集合B结果是 1
1. sadd向集合里面添加元素
sadd value 1
sadd value 2
sadd value 3
2. smembers 获取集合里面的元素
smembers value
结果:1 2 3
3. srem 移除集合里面的某个元素
srem value 1
smembers value
结果:2 3
4. spop 随机的弹出集合里面的某个元素
spop value
->2
smembers value
结果:3
集合的一个实际使用场景
一般redis里面的集合被用在社交类型的网站里面做好友关系展示。
例如实现好友的推荐,共同好友.....
⑥-zset类型
redis里面的zset类型被称为有序集合,意味有序集合里面的元素是排好序的,也满足唯一性和确定性
有序集合概图:
1. zadd 添加元素
zadd key 1 value1
zadd key 2 value2
zadd key 5 value3
zadd key 12 value4
2. zrange 获取集合元素
zrange key 0 -1
结果:
->value1
->value2
->value3
->value4
3.获取集合内容的时候,显示权重信息
zrange key 0 -1 withscores
网友评论