目标:掌握Redis的数据结构及数据类型
路径
实施
数据结构:整个Reids中**所有数据以KV结构形式**存在
K:作为唯一标识符,唯一标识一条数据,固定为String类型,写入时指定KV,读取时,根据K读取V
V:真正存储的数据,可以有多种类型
理解Redis:类似于Java中的一个Map集合,可以存储多个KV,根据K获取V
数据类型
Key:String | Value类型 | Value值 | 应用场景 |
---|---|---|---|
pv_20200101 | String | 10000 | 一般用于存储单个数据指标的结果 |
person001 | Hash | name:laoer age : 20 sex female | 用于存储整个对象所有属性值 |
uv | List | {100,200,300,100,600} | 有序允许重复的集合,每天获取最后一个值 |
uv_20200101 | Set | {userid1,userid2,userid3,userid4……} | 无序且不重复的集合,直接通过长度得到UV |
top10_product | ZSet【score,element】 | {10000-牙膏,9999-玩具,9998-电视……} | 有序不可重复的集合,统计TopN |
user_filter | BitMap | {0101010101010000000011010} | 将一个字符串构建位,通过0和1来标记每一位 |
product_20200101 | HypeLogLog | {productid1,id2……} | 类似于Set集合,底层实现原理不一样,数据量大的情况下,性能会更好,结果可能存在一定的误差 |
String类型
Hash类型
List类型
Set类型
Zset类型
小结
目标:掌握Redis常用的通用命令
实施
keys:列举当前数据库中所有Key
语法:keys 通配符
del key:删除某个KV
exists key :判断某个Key是否存在
type key:判断这个K对应的V的类型的
expire K 过期时间:设置某个K的过期时间,一旦到达过期时间,这个K会被自动删除
ttl K:查看某个K剩余的存活时间
select N:切换数据库的
Redis默认由16个数据:db0 ~ db15,个数可以通过配置文件修改,名称不能改
默认进入db0
move key N:将某个Key移动到某个数据库中
flushdb:清空当前数据库的所有Key
flushall:清空所有数据库的所有Key
node1:6379> keys *
1) "s1"
node1:6379> get s1
"hadoop"
node1:6379> set s2 hive
OK
node1:6379> get s2
"hive"
node1:6379>
node1:6379> keys *
1) "s1"
2) "s2"
node1:6379> set a1 spark
OK
node1:6379> keys *
1) "a1"
2) "s1"
3) "s2"
node1:6379> keys a*
1) "a1"
node1:6379> keys s*
1) "s1"
2) "s2"
node1:6379> del s1
(integer) 1
node1:6379> keys *
1) "a1"
2) "s2"
node1:6379> exists s2
(integer) 1
node1:6379> exists s1
(integer) 0
node1:6379>
node1:6379> hset m1 name zhangsan
(integer) 1
node1:6379> hset m1 age 18
(integer) 1
node1:6379> keys *
1) "m1"
2) "a1"
3) "s2"
node1:6379> type m1
hash
node1:6379> type s2
string
node1:6379>
node1:6379> expire a1 20
(integer) 1
node1:6379> ttl a1
(integer) 17
node1:6379> ttl a1
(integer) 16
node1:6379> ttl a1
(integer) 15
node1:6379> ttl a1
(integer) 14
node1:6379> ttl a1
(integer) 13
node1:6379> ttl a1
(integer) 12
node1:6379> ttl a1
(integer) 11
node1:6379> ttl a1
(integer) 10
node1:6379> ttl a1
(integer) 9
node1:6379> keys *
1) "m1"
2) "s2"
node1:6379>
node1:6379> select 1
OK
node1:6379[1]> select 10
OK
node1:6379[10]> select 0
OK
node1:6379> select 1
OK
node1:6379[1]> keys *
(empty list or set)
node1:6379[1]> set s1 hue
OK
node1:6379[1]> keys *
1) "s1"
node1:6379[1]> select 0
OK
node1:6379>
node1:6379> keys *
1) "m1"
2) "s2"
node1:6379> move m1 1
(integer) 1
node1:6379> keys *
1) "s2"
node1:6379> select 1
OK
node1:6379[1]> keys *
1) "m1"
2) "s1"
node1:6379[1]> flushdb
OK
node1:6379[1]> keys *
(empty list or set)
node1:6379[1]> select 0
OK
node1:6379> keys *
1) "s2"
node1:6379> flushall
OK
node1:6379> keys *
(empty list or set)
node1:6379>
小结
AI副业实战手册:http://www.yibencezi.com/notes/253200?affiliate_id=1317(目前40+工具及实战案例,持续更新,实战类小册排名第一,做三个月挣不到钱找我退款,交个朋友的产品)
📢博客主页:https://manor.blog.csdn.net
📢欢迎点赞 👍 收藏 ?留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置?
📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12394313.htmls