第五章:Redis数据类型

字符串类型:String类型

集合类型:List类型

1、Redis实际上是一个链表,before Node after , left , right 都可以插入值
2、如果key不存在,创建新的链表
3、如果key存在,新增内容
4、如果移出了所有值,空链表也表示不存在!
5、在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~
可以作为消息排队!消息队列(Lpush,Rpop)! 栈 (Lpush,Lpop)!

6、Redis不区分大小写命令

List集合常用命令
所有List命令都是L开头的
1、list 存值 :LPUSH list one;LPUSH list two;(往同一个集合里存值)
Range是list用来获取值的

1602507443(1).jpg

2、Rpush 表示往list右边存值:Rpush list fore
3、List移出命令:
Lpop list(移出list集合的左边第一个元素)
Rpop list(移出list集合的右边第一个元素)
4、通过下标获得list中的某一个值
Lindex list 1
5、返回列表的长度
Llen list
移出List中指定的值:
Lrem list 1 one
6、List通过下标截取指定的长度
Ltrim list 1 2(截取1 到 2的值)
7、移出列表的最后一个元素,将他移动到新的列表
rpopLpush list mylist(将list最后一个元素移动到mylist中)
8、Lset对指定下标元素进行更新,如果没有该key则更新失败
lset list 0 item(对下标为零的改为ltem)
9、往某一个key的前面或者后面插入指定的值
Linsert list before "word" "other"
Linsert list after "word" "new"

set类型

set开头都是s,set是无序不重复集合
1、集合中set添加值:sadd mylset "hello"
2、查看指定set的所有值:smembers mylset
3、判断某一个值是不是在set集合中:sismember myset hello
4、获取set集合中内容元素个数:scard myset
5、移出set集合中的指定元素:srem myset hello
6、随机抽选出一个元素:srandmemb myset
随机抽选出指定元素的个数:srandmemb myset 2
7、随机删除一些set集合中的元素:spop myset
8、将一个指定的值,移动到另外一个set集合!:smove myset myset2 "kuangshen"
9、set集合的差集、交集、并集(微博、b站的共同关注!)
差集:SDIFF KEY1 KEY2
交集:SINTER KEY1 KEY2(共同好友的使用)
并集:SUNION KEY1 KEY2
知识拓展:六度分隔理论:简单地说:“你和任何一个陌生人之间所间隔的人不会超五个,也就是说,最多通过六个人你就能够认识任何一个陌生人。

Hash(哈希)

Map集合,key-map!这个值是一个map集合!本质和string类型没有太大区别(以h开头)
1、set一个具体的key-value (hset myhash field1 kuangshen)

2、set多个key-value (hmset myhash field1 hello field2 world)

3、获取多个字段值 (hmget myhash field1 field2)

4、获取全部数据,展示形式就是以键和值全部展示(hgetall myhash)

5、删除hash指定的key字段(hdel myhash field1 )对应的value值也就消失了

6、获取hash表的字段数量(hlen myhash)

7、判断hash中的key是否存在(hexists myhash field1)

8、只获得所有的key:hkeys myhash
只获得所有的value:hvals myhash

9、指定增量:hset myhash field1 5
如果不存在则可以设置:hsetnx myhash field1 hello

hash变更的数据 user name age,尤其是用户信息之类的,经常变动的信息!hash更适合于对象的存储,String更加适合字符串存储

Zset(有序集合)

在set的基础上增加了一个值,set k1 v1 zset k1 score1 v1
1、显示所有用户从小到大:zrangebyscore salary -inf +inf
显示所有用户从大到小:zrangebyscore salary 0 -1
显示所有用户从小到大并且附带成绩:zrangebyscore salary -inf +inf withscores
2、显示工资小于2500的,升序排序!
zrangebyscore salary -inf 2500withscores
3、移出有序集合中的指定元素:zrem salary xiaohong
获取有序集合中的个数:zcard salary
4、获取指定区间的成员数量:
zadd myset 1 hello 2 word 3 kuangshen
zcount myset 1 3
使用场景:set排序 存储班级成绩表 ,工资表排序
普通消息:1、重要消息,2、带权重进行判断
排行榜应用实现 取TOP N 测试!

更多详细命令可上官网查看

1602595011(1).png

你可能感兴趣的:(第五章:Redis数据类型)