redis 数据类型总结

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容