Redis简介

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis简介


什么是Redis数据库?

Redis数据库是NoSQL数据库的一种,类似于高德地图这种软件中的对于一些地区等常用信息,我们不免要重复访问,如果每次访问的时候都要去调取mysql数据库,难免会影响使用性能,如果你认为Redis是一个key value store(键值存储), 那可能会用它来代替MySQL;如果认为它是一个可以持久化的cache(缓存), 可能只是它保存一些频繁访问的临时数据。


为什么Redis访问数据要比Mysql快?

1.因为Redis是基于内存存储的,而mysql是基于磁盘存储的

2.Redis是单线程的多路复用IO

3.Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。Redis会比MySQL快一点点。


Redis(key键操作)

查看当前库所有key


判断某个key是否存在


查看key是什么类型


删除key数据



del和unlink的区别 del:直接将数据删除 unlink:根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作
为给定的key设置过期时间


查看还有多少秒过期(-1表示永不过期,-2表示已过期)


切换数据库


查看当前数据库的key的数量


flushdb清空当前库

flushall通杀全部库


原子性?

原子性:所谓原子操作是指不会被线程调度机制打断的操作
这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)

(1)在单线程中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只能发生于指令之间

(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作

Redis单命令的原子性主要得益于Redis的单线程


Redis String类型的数据结构

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList ,采用预分配冗余空间的方式来减少内存的频繁分配.

如图中所示,内部为当前字符串实际分配的空间capacity-般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M ,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。


Redis List列表

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

它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

Redis List列表的数据结构

List的数据结构为快速链表quickList

首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist ,也即是压缩列表它将所有的元素紧挨着一起存储 ,分配的是一块连续的内存

当数据量比较多的时候才会改成qucklist

因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。


Redis将链表和ziplist结起来组成了quicklist, 也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
9月前
|
SQL NoSQL Java
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
|
2月前
|
存储 NoSQL Redis
Redis 简介 + Python 操作发布订阅
Redis 简介 + Python 操作发布订阅
|
1月前
|
NoSQL Redis 数据库
【Redis从入门到入土】布隆过滤器简介、特点和原理
【6月更文挑战第1天】布隆过滤器是一种节省内存的不确定数据结构,用于判断元素是否可能在一个集合中。它由位数组和多个哈希函数组成,能快速插入和查询,但存在误判风险:可能存在假阳性(判断存在但实际不存在),但绝无假阴性(判断不存在则确实不存在)。适用于大规模数据的去重问题,如电话号码判断、安全网站链接检查、黑名单和白名单校验。其工作原理是通过多个哈希函数将元素映射到位数组中,添加时设置相应位置为1,查询时所有位置都为1则可能存在,有0则肯定不存在。由于哈希冲突,可能导致误判,且一旦添加元素无法删除,以避免影响其他元素。
30 4
|
11天前
|
存储 NoSQL Linux
Linux下Redis简介、安装、设置、启动
Linux下Redis简介、安装、设置、启动
18 0
|
2月前
|
存储 SQL NoSQL
【Redis】Redis-NoSQL数据库简介
【1月更文挑战第18天】【Redis】Redis-NoSQL数据库简介
|
2月前
|
自然语言处理 NoSQL 安全
Redis基础篇:Redis简介和安装
Redis基础篇:Redis简介和安装
|
7月前
|
存储 NoSQL Linux
Redis-命令操作Redis->redis简介,redis的安装(Linux版本&windows版本),redis的命令
Redis-命令操作Redis->redis简介,redis的安装(Linux版本&windows版本),redis的命令
91 0
|
8月前
|
存储 缓存 NoSQL
初学Redis简介以及入门
初学Redis简介以及入门
|
8月前
|
存储 缓存 NoSQL
Redis 简介
不可打断的执行,因为原子性,所以可以让使用者的意志从一而终的贯穿全局。 长久社区维护下的多样化风格
40 0
|
8月前
|
存储 缓存 NoSQL
分布式系列教程(02) -分布式Redis缓存(简介&安装&基础)
分布式系列教程(02) -分布式Redis缓存(简介&安装&基础)
121 0