Redis主要有哪些功能?

1.哨兵(Sentinel)和复制(Replication)

Redis服务器毫无征兆的罢工是个麻烦事,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制。

Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能,Replication则是负责让一个Redis服务器可以配备多个备份的服务器。

Redis也是利用这两个功能来保证Redis的高可用的

2.事务

很多情况下我们需要一次执行不止一个命令,而且需要其同时成功或者失败。redis对事务的支持也是源自于这部分需求,即支持一次性按顺序执行多个命令的能力,并保证其原子性。

3.LUA脚本

在事务的基础上,如果我们需要在服务端一次性的执行更复杂的操作(包含一些逻辑判断),则lua就可以排上用场了

4.持久化

redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。

5.集群(Cluster)

单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上,这也有点类似mysql数据库的主从同步。

在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案,这两个方案总体上来说都是依赖proxy来进行分布式的。



Redis支持哪几种数据类型?

支持多种类型的数据结构

1.string:最基本的数据类型,二进制安全的字符串,最大512M。

使用场景

  • 缓存功能:字符串最经典的使用场景,Redis作为缓存层,MySQL作为储存层,绝大部分请求数据都是Redis中获取,由于Redis具有支撑高并发特性,所以缓存通常能起到加速读写和降低后端压力的作用。

  • 计数器:许多运用都会使用Redis作为计数的基础工具,他可以实现快速计数、查询缓存的功能,同时数据可以一步落地到其他的数据源。
    例如:视频播放数系统就是使用Redis作为视频播放数计数的基础组件。

  • 共享Session:出于负载均衡的考虑,分布式服务会将用户信息的访问均衡到不同服务器上,用户刷新一次访问可能会需要重新登录,为避免这个问题可以用Redis将用户Session集中管理,在这种模式下只要保证Redis的高可用和扩展性的,每次获取用户更新或查询登录信息都直接从Redis中集中获取。

  • 限速:处于安全考虑,每次进行登录时让用户输入手机验证码,为了短信接口不被频繁访问,会限制用户每分钟获取验证码的频率。

2.list:按照添加顺序保持顺序的字符串列表。

常用命令

  • lpush、rpush、lpop、rpop、lrange等。

使用场景

  • 消息队列:Redis的lpush+brpop命令组合即可实现阻塞队列,生产者客户端是用lupsh从列表左侧插入元素,多个消费者客户端使用brpop命令阻塞时的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性。




3.set:无序的字符串集合,不存在重复的元素。

常用命令

  • sadd、spop、smembers、sunion等。

使用场景

  • 标签(tag):集合类型比较典型的使用场景,如一个用户对娱乐、体育比较感兴趣,另一个可能对新闻感兴趣,这些兴趣就是标签,有了这些数据就可以得到同一标签的人,以及用户的共同爱好的标签,这些数据对于用户体验以及强用户粘度比较重要。
    注意:用户和标签的关系维护应该放在一个事物内执行,防止部分命令失败造成数据不一致。


4.sorted set:已排序的字符串集合。

常用命令

  • zadd、zrange、zrem、zcard等。

使用场景

  • 排行榜:例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。

5.hash:key-value对的一种集合。

常用命令

  • hget、hset、hgetall等。

使用场景

  • 通常用来存储一个用户信息的对象数据,例如记录网站每个用户个人主页的访问量:hincrby user:1:info pageviewcount。
    缓存视频的基本信息(数据源在Mysql中)。


更多相关文章

  1. MyBatis 延迟加载、一二级缓存、架构设计的面试题(常问,重点了解)
  2. 帮你解读什么是Redis缓存穿透和缓存雪崩
  3. MyBatis之Mapper XML 文件详解(六)-缓存配置
  4. JY06用户组权限管理
  5. 图书管理系统【用户、购买、订单模块、添加权限】
  6. 用户登陆注册【JDBC版】
  7. redis缓存服务
  8. HTTP缓存

随机推荐

  1. Flutter插件开发之APK自动安装
  2. Android 面试必备 - 系统、App、Activity
  3. 详解Android主流框架不可或缺的基石
  4. Android音频简介
  5. Linux/Android——input系统之 kernel层
  6. Android模拟SD卡实现方法解析
  7. 第三课:android数据相关---文件
  8. Android(安卓)表格布局的RadioButton
  9. Android中RelativeLayout各个属性 androi
  10. Android漏洞——将Android恶意代码隐藏在