iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis日常运维-基础认识
  • 215
分享到

Redis日常运维-基础认识

2024-04-02 19:04:59 215人浏览 安东尼
摘要

引言 近 期参加了江老师关于Redis的培训,加深了对Redis数据库的理解。 ●目录● 一 redis适用场景 二 redis优势 三 Redis数据类型 四 redis持久化

引言

近 期参加了江老师关于Redis的培训,加深了对Redis数据库的理解。

●目录●

一 redis适用场景

二 redis优势

三 Redis数据类型

四 redis持久化

五 redis架构

●内容●

一 redis适用场景

Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,似乎Redis更像一个加强版的Memcached。

1 会话缓存(Session Cache) 

最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached) 的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的。

2 队列

Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如python)对 list 的 push/pop 操作。

3 全页缓存

大型互联网公司都会使用Redis作为缓存存储数据,提升页面相应速度。即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降。 

4 排行榜/计数器

Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单。

二 Redis优势

1 性能极高

Redis能读的速度是110000次/s,写的速度是81000次/s 。 

2 丰富的数据类型

Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

3 原子

Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

4 丰富的特性

Redis还支持 publish/subscribe, 通知, key 过期等等特性

MySQL+Memcached 演变 MySQL+Redis 

Mysql适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,遇到了很多问题:

mysql需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。

• Memcached与Mysql数据库数据一致性问题。

• Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。

• 跨机房cache同步问题

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:

• Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

• Redis支持数据的备份,即master-slave模式的数据备份。

• Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

三 Redis数据类型

Redis支持五种数据类型:

1 string(字符串

2 hash(哈希)

3 list(列表)

4 set(集合)

5 zset(sorted set:有序集合)

3.1 string

string 是 redis 最基本的类型,可以理解成与 Memcached 一模一样的类型,一个 key 对应一个value。 

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

• string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB

• redis 127.0.0.1:6379> SET name ”keyman"

• redis 127.0.0.1:6379> GET name

应用场景

• String是最常用的一种数据类型,普通的key/value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受Redis的定时持久化,操作日志及 Replication等功能。除了提供与 Memcached 一样的get、set、incr、decr 等操作外 

• Redis还提供了下面一些操作: 

• 获取字符串长度

• 往字符串append内容 

• 设置和获取字符串的某一段内容 

• 设置及获取字符串的某一位(bit)

• 批量设置一系列字符串的内容 

• 实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int

3.2 hash 

常用命令

• hget,hset,hgetall 等 

应用场景

• 在Memcached中,经常将一些结构化的信息打包成HashMap,在客户端序列化后存储为一个字符串的值,用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。

3.3 list

常用命令

• lpush、rpush、lpop、rpop、lrange

应用场景

• Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等都可以用Redis的list结构来实现。

• Lists 就是链表,相信略有数据结构知识的人都应该能理解其结构。使用Lists结构,可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列,

• 可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。

Redis还提供了操作Lists中某一段的api,可以直接查询,删除Lists中某一段的元素

3.4 set

常用命令

• sadd、spop、smembers、suNIOn 等 

应用场景:

• Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

• Sets 集合的概念就是一堆不重复值的组合。利用Redis提供的Sets数据结构,可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中

3.5 sort set 

常用命令:

• zadd,zrange,zrem,zcard等 

使用场景

• Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

• 另外还可以用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行

四 redis持久化

Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。

Redis提供了两种持久化的方式

• RDB(Redis DataBase) 

• AOF(Append Only File)

4.1 RDB 

在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本。如果系统发生故障,将会丢失最后一次创建快照之后的数据。如果数据量大,保存快照的时间会很长。

4.2 AOF 

换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。将写命令添加到 AOF 文件(append only file)末尾。

五 redis架构

5.1 单机

5.2 主从

5.3 哨兵

5.4 集群

5.3 哨兵

哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。

哨兵主要功能

• 集群监控:负责监控Redis master和slave进程是否正常工作

• 消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 

• 故障转移:如果master node挂掉了,会自动转移到slave node上 

• 配置中心:如果故障转移发生了,通知client客户端新的master地址

5.4 集群 

即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。

为了最大化利用内存,可以采用集群,就是分布式存储。

即每台redis存储不同的内容,共有16384个slot。

每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot。

集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。

高可用性:在主机挂掉后,自动故障转移,使前端服务对用户无影响。 

• 读写分离:将主机读压力分流到从机上。 

• 可在客户端组件上实现负载均衡,根据不同服务器的运行情况,分担不同比例的读请求压力

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

Redis日常运维-基础认识

您可能感兴趣的文档:

--结束END--

本文标题: Redis日常运维-基础认识

本文链接: https://www.lsjlt.com/news/48780.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis日常运维-基础认识
    引言 近 期参加了江老师关于Redis的培训,加深了对Redis数据库的理解。 ●目录● 一 redis适用场景 二 redis优势 三 Redis数据类型 四 redis持久化 ...
    99+
    2024-04-02
  • python基础一(认识python及基
    前言:    这个博客的就是笔者用来作总结的,只会写出一些必要的东西,所以并不适合一个初学者看一、python是什么    Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着...
    99+
    2023-01-31
    基础 python
  • 24. 日常运维 3
    任务计划/etc/crontab 任务计划配置文件crontab -e 编辑任务计划crontab -l(小写的L) 列出任务计划crontab -r 删除crontab -u [username] 指定某个用户1-5 表示范围1到51...
    99+
    2023-01-31
    日常
  • 运维日常工作
    1 inux运维的主要工作内容什么是linux运维运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常。在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术。运维又包括很多种,有...
    99+
    2023-06-05
  • openstack 基础运维命令
    以下是一些基础的OpenStack运维命令:1. 登录到OpenStack控制节点:$ ssh @2. 列出所有的OpenStack...
    99+
    2023-10-11
    openstack
  • linux运维需要掌握的基础知识有什么
    这期内容当中小编将会给大家带来有关linux运维需要掌握的基础知识有什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。踏入linux运维工程师这一职业,其实有很多工具技能需要掌握,下面我来给大家一一介绍。...
    99+
    2023-06-06
  • Linux运维常用知识(3)
    Apache日志统计举例参考:http://loveyan.blog.51cto.com/829079/745164         http://blog.sina.com.cn/s/blog_79bc8e830101m84w.html ...
    99+
    2023-01-31
    常用 知识 Linux
  • Redis基础知识点有哪些
    本篇内容介绍了“Redis基础知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 什么是Red...
    99+
    2024-04-02
  • Python基础学习之认识线程
    目录一、什么是线程?二、再来解释线程的代码三、线程触发业务函数,线程调用业务函数四、多了一个线程是哪个?五、总结一、什么是线程? 我们知道工人都是同时在工厂工作,复制各自的工作的。他...
    99+
    2024-04-02
  • 01月19日【Python3 基础知识】
    2.1 数据类型 2.2 字符串 2.3 list操作 2.1 数据类型 # Ptyhon运算符 ''' 数字运算符: + - * / % 关系运算符: a == b a>b a<b a!=b >= ...
    99+
    2023-01-31
    基础知识
  • 01月29日【Python3 基础知识】
    5.4 参数匿名函数字典排序 5.5 生成式和生成器 5.6 装饰器的作用 5.4 参数匿名函数字典排序 # *元组;**字典 def add(*args): total = 0 for i in args: ...
    99+
    2023-01-31
    基础知识
  • 01月18日【Python3 基础知识】
    1.1 Python的安装1.2 pycharm安装1.3 pycharm快捷键1.4 pycharm其他设置 1.1 Python的安装 Python的重要性 python 流行程度 近几年内已经挤进前五名,慢慢已经成为一个开发者或运...
    99+
    2023-01-31
    基础知识
  • 01月23日【Python3 基础知识】
    3.1 if/while/for 3.2 解决数学难题 3.3 Python实例 3.1 if/while/for ''' # if 判断条件: 执行语句 elif 判断条件: 执行语句 else: 执...
    99+
    2023-01-31
    基础知识
  • 01月24日【Python3 基础知识】
    3.4 统计字符串 3.5 乘法口诀 3.4 统计字符串 # 统计字符串给类型符号个数 s = n = f = 0 st = input("随意输入字符:") for i in st: if i.isalpha(): ...
    99+
    2023-01-31
    基础知识
  • 01月26日【Python3 基础知识】
    5.1 九宫格 5.2 函数入门 5.3 判断某天为某年的第几天 5.1 九宫格 import random x = 0 l = [1,2,3,4,5,6,7,8,9] print("*************") while...
    99+
    2023-01-31
    基础知识
  • JavaScript常用的基础知识
    本篇内容介绍了“JavaScript常用的基础知识”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在学习Ja...
    99+
    2024-04-02
  • 01月25日【Python3 基础知识】
    4.1 读写文件 4.2 文件方法 4.3 python2的乱码问题 4.4 python对passwd文件进行排序 4.1 读写文件 访问 模式 说 明 r 以只读方式打开文件。文件的指针将会放在文件的开头...
    99+
    2023-01-31
    基础知识
  • 01月22日【Python3 基础知识】
    2.4 计算器 2.5 tuple操作 2.6 dict 2.7 其他常用操作 2.4 计算器 def add(string): total = 0 numbers = [] numbers += s...
    99+
    2023-01-31
    基础知识
  • Linux系统运维常用命令及常识
    本篇内容介绍了“Linux系统运维常用命令及常识”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 文件管理2 软件管理3 系统管理4 服务管...
    99+
    2023-06-09
  • Oracle 19C Data Guard基础运维-05Failovers (GAP)
    Oracle 19C Data Guard 基础运维 -0 5Failovers (GAP) 原主库 原备库 Failovers 新主库 独立库 192.168....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作