大数据学习之Redis、从零基础到入门(三)

目录

三、redis10大数据类型

1.哪十个?

[1.1 redis字符串(String)](#1.1 redis字符串(String))

[1.2 redis列表(List)](#1.2 redis列表(List))

[1.3 redis哈希表(Hash)](#1.3 redis哈希表(Hash))

[1.4 redis集合(Set)](#1.4 redis集合(Set))

[1.5 redis有序集合(ZSet)](#1.5 redis有序集合(ZSet))

[1.6 redis地理空间(GEO)](#1.6 redis地理空间(GEO))

[1.7 redis基数统计(HyperLongLog)](#1.7 redis基数统计(HyperLongLog))

[1.8 redis位图(bitmap)​编辑](#1.8 redis位图(bitmap)编辑)

[1.9 redis位域(bitfiled)](#1.9 redis位域(bitfiled))

[1.10 redis流(Stream)](#1.10 redis流(Stream))

[2. Redis键(key)](#2. Redis键(key))

[2.1 keys *](#2.1 keys *)

[2.2 exists key](#2.2 exists key)

[2.3 type key](#2.3 type key)

[2.4 del key](#2.4 del key)

[2.5 unlike key](#2.5 unlike key)

[2.6 ttl key](#2.6 ttl key)

[2.7 expire key 秒钟](#2.7 expire key 秒钟)

[2.8 move key dbindex【0-15】](#2.8 move key dbindex【0-15】)

[2.9 select dbindex【0-15】](#2.9 select dbindex【0-15】)

[2.10 dbsize](#2.10 dbsize)

[2.11 flushdb](#2.11 flushdb)

[2.12 flushall](#2.12 flushall)


三、redis10大数据类型

1.哪十个?

1.1 redis字符串(String)

String(字符串)

hello world

string是redis最基本的类型,一个key对应一个value。

string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

1.2 redis列表(List)

List(列表)

[A>B>C>C]

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边) 或者尾部(右边)

它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素(4294967295,每个列表超过40亿个元素)

1.3 redis哈希表(Hash)

Hash

{a:"hello",b:"world"}

k1 field v1

Redis hash 是一string 类型的 field (字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

1.4 redis集合(Set)

Set

{A<B<C}

Redis 的 Set 是 String 类型的无序集合 。集合成员是唯一的,这就意味着集合中不能出现重复的数据 ,集合对象的编码可以是 intset 或者 hashtable. Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1(4294967295,每个集合可存储40多亿个成员)

1.5 redis有序集合(ZSet)

Sorted set(Zset)

{A:1,B:2,C:3} Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

zset集合是通过哈希表实现的,所以添加,删除,霍找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 -1

1.6 redis地理空间(GEO)

Geospatial

{A:(50.1,0,5)}

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作[包括 添加地理位置的坐标。 获取地理位置的坐标。 计算两个位置之间的距离。 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

1.7 redis基数统计(HyperLongLog)

Hyperlog

01101101 01101111 01101101

HVperLOCLOG 是用来基数统计的算法,HVperLOgLOg 的优点是,在输入元素的额量或者体积非常非常大时,计算基数所需的空间是固定日是很小的。 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内就越多的集合形成鲜明对比。 日是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素.

1.8 redis位图(bitmap)

Bitmap

011011010110111101101101

一个字节(一个byte)= 8位

上图由许许多多的小格子组成,每一个格子里面只能放1或者0,用它来判断Y/N状态说的专业点,每一个个小格子就是一个个bit

1.9 redis位域(bitfiled)

Bitfield

{23334}{6634728}{916}

通过bitield命令可以一次性操作多个比特位期(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元 素对应参数列表中的相应操作的执行结果。 说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作。

1.10 redis流(Stream)

Stream

{id1=time1.seq((a:"foo",b:"bar"))}

Redis Stream 主要用于消息队列(MQ, Messae Oueue),Redis 本身是有一个 Redis 发布订阅 (pub/sub)来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。 简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。 而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失

2. Redis键(key)

2.1 keys *

查看当前库所有的key

2.2 exists key

判断某个key是否存在

返回1存在,返回0不存在,返回2、3、4,说明有2、3、4个存在

2.3 type key

查看key的数据类型

2.4 del key

删除key

返回1,删除成功;返回0,没有此值

2.5 unlike key

非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作

2.6 ttl key

查看还有多少秒过期

-1表示永不过期,-2代表已经过期

2.7 expire key 秒钟

为给定的key设置过期时间

2.8 move key dbindex【0-15】

将当前数据库的key移动到给定的数据库db库中

一个redis默认带着16个数据库,默认使用的是0号库

2.9 select dbindex【0-15】

切换数据库【0-15】,默认为0

2.10 dbsize

查看当前数据库key的数量

2.11 flushdb

清空当前数据库

2.12 flushall

通杀全部库

相关推荐
吃杠碰小鸡30 分钟前
commitlint校验git提交信息
前端
emmm45939 分钟前
html兼容性问题处理
html
虾球xz1 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
我爱李星璇1 小时前
HTML常用表格与标签
前端·html
疯狂的沙粒1 小时前
如何在Vue项目中应用TypeScript?应该注意那些点?
前端·vue.js·typescript
小镇程序员1 小时前
vue2 src_Todolist全局总线事件版本
前端·javascript·vue.js
野槐1 小时前
前端图像处理(一)
前端
程序猿阿伟2 小时前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
疯狂的沙粒2 小时前
对 TypeScript 中函数如何更好的理解及使用?与 JavaScript 函数有哪些区别?
前端·javascript·typescript
瑞雨溪2 小时前
AJAX的基本使用
前端·javascript·ajax