redis --<<REmote Dictionary Service>> 名称含义 :远程字典服务
1.关系数据库和非关系型数据库的对比
关系型数据库特点
1.基于行存储数据, 二维的模式
2.存储机构结构化数据, 数据存储有固定的模式schema
3.表与表之间存在关联Relationship
4.大都支持SQl,结构化查询语言的操作, 支持复杂的关联查询
5.通过支持事务ACID酸来提供严格或者实时的数据一致性
关系型数据库的不足
1.要实现扩容的话, 只能向上(垂直)扩展, 不支持动态的扩缩容
2.表结构修改困难,因此存储的数据格式也收到限制
3.高并发情况下, 基于磁盘的读写压力比较大
非关系型数据库特点(non-relational NoSQL)
1.存储非结构化的数据, 比如文本 图片 音频 视频
2.表与表之间没有关联,可扩展行强
3.保证数据的最终一致性, 遵循BASE碱理论
4.支持海量数据的存储和高并发的高效读写
5.支持分布式,能够对数据进行分片存储,扩缩容简单
hostingdata.co.uk/nosql-database/ 非关系型数据库网站,举例如下:
1.KV存储: Redis 和 Memcached
2.文档存储: MongoDB
3.列存储: HBase
4.图存储:Neo4j
5.对象存储
6.XML存储
7........
有句话说的好: 小孩子才做选择...... 大人全都要
Redis 基本特性
速度快
支持多种数据类型
支持多种编程语言
持久化,内存淘汰
功能丰富: 事物 发布订阅 pipeline lua
集群分布式
Redis一主二从Sentinel 监控配置
https://gper.club/articles/7e7e7f7ff3g5bgccg68
redis 切换库的命令 : 进入客户端 select 1
flushdb
flushall
Redis 增删改查
set qingshan2673(增 改)
get qingshan(查)
keys*
dbsize
exits qingshan
del qingshan huihui
rename qingshan pengyuyan
type qingshan
分析维度
1.存储类型
2.操作命令
3.存储原理(底层编码)
4.应用场景
String 存储类型
1.INT 整型
2.Float单精度浮点型
3.String字符串
String -操作命令
getrange qingshan 0 1
strlen qingshan
append qingshan good
setnx qingshan pyy
mset qingshan 2673 huihui 666
mget qingshan huihui
incr qingshan
incrby qingshan 100
decr qinshan
decrby qinshan 100
set mf 2.6
incrbyfloat mf 7.3
String 的三种编码
1.int, 存储8个字节的长整型(long , 2^63-1)
2.embstr, embstr 格式的SDS, 存储小于44个字节的字符串
3.raw, SDS , 存储大于44个字节的字符串
SDS是什么?(Simple Dynamic String)
sdshr5: 2^5 = 32byte (不用)
sdshr8: 2^8 = 256byte
sdshr16: 2^16 = 65536byte= 64KB
sdshr32: 2^32 = 4GB
Redis 为什么要用SDS,要自己实现一个字符串数组?
String类型可以干什么?
1.缓存
2.分布式Session
3.分布式set NX EX
4.分布式全局ID incr
5.计数器incr
6.限流 incr
7.位操作
可不可以一次存储多条字符串信息?
mset 和 mget 命令可以实现一次存/取多条数据.
Hash 哈希
存储多个无序的键值对,最大存储量2^ 32-1(40亿左右)
2.Hash特点:
1.节省内存空间
2.减少key冲突
3.取值减少性能消耗
Hash不适合的场景:
1.Field不能单独设置过期时间
2.需要考虑数量分布的问题.
Hash-存储结构
ziplist:OBJ_ENCODING_ZIPLIST(压缩列表)
hashtable: OBJ_ENCODING_HT(哈希表)
List列表(有序)
存储有序的字符串(从左到右), 元素可以重复.
最大存储量2^32-1(40亿左右)
常用操作命令
lpush queue a
lpush queue b c
rpush queue d e
lpop queue
rpop queue
lindex queue 0
lrang queue 0 -1
List 存储原理(quicklist): 底层数组加链表的结构
set集合
Set存储String类型的无序集合
最大存储量为2^32-1(40亿左右)
set-存储结构
1.intset
2.hashtable
1.抽奖: spop mysset
2.点赞 / 抽奖 打卡
3.商品标签
set1{a,b,c} set{b,c,d}
获取差集
sdiff set1 set2 {a,d}
获取交集(intersection)
sinter set1 set2 {b,c}
获取并集
sunion set1 set2 {a,b,c,d}
zset 有序集合
zset-存储结构 ziplist(元素数量<128,所有元素长度小于64bytes) zkiplist+dict zkiplist 跳表 使用场景: 排行榜其他的数据机构
BItmap(String) 位图
Geospatial 存的地址信息
Hyperloglogs
Streams
网友评论