Redis内存数据库笔记

redis是一种基于键值对(key-value)数据库,其中value可以为string、hash、list、set、zset等多种数据结构,可以满足很多应用场景 。还提供了键过期,发布订阅,事务,流水线,等附加功能

Redis内存数据库笔记

文章插图
 
二、Redis特性
  • 1 速度快
  • 2 键值对的数据结构服务器
  • 3 丰富的功能
  • 4 简单稳定
  • 5 持久化
  • 6 主从复制
  • 8 高可用和分布式转移
  • 9 客户端语言多
三、使用场景
  • 1 缓存数据库
  • 2 排行榜
  • 3 计数器应用
  • 4 社交网络
  • 5 消息队列

Redis内存数据库笔记

文章插图
 
四、数据类型
1.String
字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础 。
【Redis内存数据库笔记】字符串类型实际上可以是字符串(简单的字符串、复杂的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视频)),但最大不能超过512M 。
  • 使用实例:
redis 127.0.0.1:6379> SET name "runoob"OKredis 127.0.0.1:6379> GET name"runoob"复制代码
  • 使用场景:
缓存功能:字符串最经典的使用场景,redis最为缓存层,MySQL作为储存层,绝大部分请求数据都是 redis中获取,由于redis具有支撑高并发特性,所以缓存通常能起到加速读写和降低 后端压力的作用 。
计数器:许多运用都会使用redis作为计数的基础工具,他可以实现快速计数、查询缓存的功能,同时数据可以一步落地到其他的数据源 。如:视频播放数系统就是使用redis作为视频播放数计数的基础组件 。
共享session:出于负载均衡的考虑,分布式服务会将用户信息的访问均衡到不同服务器上,用户刷新一次访问可能会需要重新登录,为避免这个问题可以用redis将用户session集中管理,在这种模式下只要保证redis的高可用和扩展性的,每次获取用户更新或查询登录信息都直接从redis中集中获取 。
限速:处于安全考虑,每次进行登录时让用户输入手机验证码,为了短信接口不被频繁访问,会限制用户每分钟获取验证码的频率 。
Redis内存数据库笔记

文章插图
 
2.Hash(哈希)
在redis中哈希类型是指键本身又是一种键值对结构,如value=https://www.isolves.com/it/sjk/Redis/2019-09-02/{{field1,value1},......{fieldN,valueN}}。
Redis hash 是一个键值(key=>value)对集合 。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象 。
每个 hash 可以存储 232 -1 键值对(40多亿)
  • 使用实例
redis> HMSET myhash field1 "Hello" field2 "World""OK"redis> HGET myhash field1"Hello"redis> HGET myhash field2"World"复制代码
  • 使用场景
哈希结构相对于字符串序列化缓存信息更加直观,并且在更新操作上更加便捷 。所以常常用于 用户信息 等管理,但是哈希类型和关系型数据库有所不同,哈希类型是稀疏的,而关系型数据库是完全结构化的,关系型数据库可以做复杂的关系查询,而redis去模拟关系型复杂查询,开发困难,维护成本高 。
3.List(列表)
列表类型是用来储存多个有序的字符串,列表中的每个字符串成为元素(element),一个列表最多可以储存 2的32次方-1个元素,在redis中,可以队列表两端插入(pubsh)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下表的元素等,列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,实际开发中有很多应用场景 。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿) 。
  • 使用实例:
redis 127.0.0.1:6379> lpush runoob redis(integer) 1redis 127.0.0.1:6379> lpush runoob mongodb(integer) 2redis 127.0.0.1:6379> lpush runoob rabitmq(integer) 3redis 127.0.0.1:6379> lrange runoob 0 101) "rabitmq"2) "mongodb"3) "redis"redis 127.0.0.1:6379>复制代码
  • 使用场景
消息对列: redis的lpush+brpop命令组合即可实现阻塞队列,生产者客户端是用lupsh从列表左侧插入元素,多个消费者客户端使用brpop命令阻塞时的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性


推荐阅读