初始redis

目录

前言:

1.盛赞redis

2 redis特性

3.redis的典型应用场景

4.安装并启动redis


前言:

        本章将带领读者进入Redis的世界,了解它的前世今生、众多特性、典型应用场景、安装配置、如何用好等,最后会对Redis发展过程中的重要版本进行说明。

1.盛赞redis

        Redis是一种基于键值对(key-value) 的NoSQL数据库,与很多键值对数据库不同的是,Redis
中的值可以是由string (字符串)、hash (哈希)、list (列表)、set (集合) 、zset (有序集合)、
Bitmaps (位图)、HyperLogLog、 GEO (地理信息定位)等多种数据结构和算法组成,因此Redis
可以满足很多的应用场景,而且因为Redis会将所有数据都存放再内存中,所以它的读写性能非常惊人。不仅如此,Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失” 。除了上述功能以外,Redis 还提供了键过期、发布订阅、事务、流水线、Lua 脚本等附加功能。总之,如果在合适的场景使用号Redis,它就会像一把瑞士军刀一样所向披靡。
        2008年,Redis 的作者Salvatore Sanfilippo在开发一个叫LLOOGG的网站时,需要实现一个高性能的队列功能,最开始是使用MySQL来实现的,但后来发现无论怎么优化SQL语句等都不能使网站的性能提高.上去,再加上自己囊中羞涩,于是他决定自己做一个专属于LLOOGG的数据库,这个就是Redis的前身。后来,Salvatore Sanfilippo将Redis 1.0的源码发布到Github.上,可能连他自己都,没想到,Redis 后来如此受欢迎。
        假如现在有人问Redis的作者都有谁在使用Redis,我想他可以开句玩笑的回答:还有谁不使用
Redis,当然这只是开玩笑,但是从Redis的官方公司统计来看,有很多重量级的公司都在使用
Redis,如国外的Twitter、Instagram、 Stack Overflow、Github 等,国内就更多了,如果单单从体
量来统计,新浪微博可以说是全球最大的Redis使用者,除了新浪微博,还有像阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等公司都是Redis的使用者。除此之外,许多开源技术像ELK等已经把Redis作为它们组件中的重要一环, 而且Redis还提供了模块系统让第三方人员实现功能扩展,让Redis发挥出更大的威力。所以,可以这么说,熟练使用和运维Redis已经成为开发运维人员的一个必备技能。

2 redis特性

Redis之所以受到如此多公司的青睐,必然有之过人之处,下面是关于Redis的8个重要特性。

1.速度快
正常情况下,Redis 执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能,但这里先不讨论机器性能上的差异,只分析一下是什么造就了Redis如此之快,可以大概归纳为以下四点:
●Redis 的所有数据都是存放在内存中的, 表1-1 是谷歌公司2009年给出的各层级硬件执行速度,所以把数据放在内存中是Redis速度快的最主要原因。
Redis是用C语言实现的,一般来说C语言实现的程序“距离” 操作系统更近,执行速度相对会更快。
●Redis使用了单线程,预防了多线程可能产生的竞争问题。
Redis在6.0版本引入了多线程机制,但主要也是在处理网络和I0,不涉及到数据命令,即命令
的执行仍然采用了单线程模式。.
●作者对于Redis源代码可以说是精打细磨,曾经有人评价Redis是少有的集性能和优雅于一身的开
源代码。
表1-1谷歌公司给出的各层级硬件执行速度

2.基于键值对的数据结构服务器
几乎所有的编程语言都提供了类似字典的功能,例如C++里的map、Java 里的map、Python 里
的dict等,类似于这种组织数据的方式叫做基于键值对的方式,与很多键值对数据库不同的是,
Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,这样不仅能便于在许多应用场景的开发,同时也能提高开发效率。Redis 的全程是REmote Dictionary Server,它主要提供了5种数据结构:字符串(string) 、哈希(hash) 、列表(list) 、集合(set) 、有序集合(ordered set /zet),同时在字符串的基础之.上演变出了位图(Bitmaps) 和HyperLogLog两种神奇的”数据结构“,并且随着LBS (Location Based Service,基于位置服务)的不断发展,Redis 3.2.版本种加入有关GEO (地理信息定位)的功能,总之在这些数据结构的帮助下,开发者可以开发出各种“有意思”的应用。

3.丰富的功能
除了5种数据结构,Redis 还提供了许多额外的功能:
提供了键过期功能,可以用来实现缓存。
提供了发布订阅功能,可以用来实现消息系统。
支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
提供了简单的事务功能,能在一-定程度 上保证事务特性。
提供了流水线(Pipeline) 功能,这样客户端能将一批命令一次性传 到Redis,减少了网络的开销。

4.简单稳定
Redis的简单主要表现在三个方面。首先,Redis 的源码很少,早期版本的代码只有2万行左右,
3.0版本以后由于添加了集群特性,代码增至5万行左右,相对于很多NoSQL数据库来说代码量相对要少很多,也就意味着普通的开发和运维人员完全可以“吃透” 它。其次,Redis 使用单线程模型,
这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。最后,Redis 不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库),Redis 自己实现了事件处理的相关功能。但与简单相对的是Redis具备相当的稳定性,在大量使用过程中,很少出现因为Redis自身BUG而导致宕掉的情况。

5.客户端语言多
Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis受到社区和各大公司的广泛认可,所以支持Redis的客户端语言也非常多,几乎涵盖了主流的编程语言,例如C、C++、Java、 PHP、Python、 NodeJS 等,后续我们会对Redis的客户端使用做详细说明。

6.持久化(Persistence)
通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化方式: RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中
(如图1-1所示),这样就保证了数据的可持久性,后续我们将对Redis的持久化进行详细说明。

图1-1 Redis内存到硬盘的持久化

7.主从复制(Replication)
Redis提供了复制功能,实现了多个相同数据的Redis副本(Replica) (如图 1-2所示),复制功能是分布式Redis的基础。后续我们会对Redis的复制功能进行详细演示。

图1-2 Redis主从复制架构

8.高可用(High Availability)和分布式(Distributed)
Redis提供了高可用实现的Redis哨兵(Redis Sentinel),能够保证Redis结点的故障发现和故障自动转移。也提供了Redis集群(Redis Cluster), 是真正的分布式实现,提供了高可用、读写和容量的扩展性。

3.redis的典型应用场景

1.缓存(Cache)
缓存机制几乎在所有大型网站都有使用,合理地使用缓存不仅可以加速数据的访问速度,而且能
够有效地降低后端数据源的压力。Redis 提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。
2.排行榜系统
排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照
各种复杂维度计算出的排行榜, Redis 提供了列表和有序集合的结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

3.计数器应用
计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的
实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是-种挑
战。Redis 天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。
4.社交网络
赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量
通常比较大,而且传统的关系型数据不太合适保存这种类型的数据,Redis 提供的数据结构可以相对比较容易地实现这些功能。
5.消息队列系统
消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等
特性。Redis 提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。

4.安装并启动redis

        上面,我们大致了解了Redis的几个重大版本,我们在本教程中选择5.0版本,原因是5.0已经
支持了大部分的功能特性,而且相比较于7.0版本,更容易进行安装使用。

注:

Redis的官方并不支持微软的Windows操作系统,因为Redis的许多特性都是和操作系统相关的,所以支持Windows会增加维护成本,而且更重要的是大部分公司都在使用Linux操作系统,而Redis在Linux操作系统上的表现已经得到实践的证明。当然Redis作为一款优秀的开源技术,还是吸引到微软公司的注意,微软公司的开源技术组在Github.上维护了一个Redis分支: https://github.com/MSOpenTech/redis。 不过我们还是强烈建议大家在Linux上使用Redis。

接下来我们选择在Linux上安装redis。

在Centos上安装redis:

使用yum安装,首先安装scl源,再安装redis

yum install centos-release-scl-rh
yum install rh-redis5-redis

创建符号链接
默认安装的目录为/opt/rh/rh-redis5/root/usr/bin/ ,藏的太深了,不方便使用.我们通过符号链接,把需
要用到的关键内容设置到方便使用的目录中.

cd /usr/bin
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli

针对配置文件设置符号链接

cd /etc/
ln -s /etc/opt/rh/rh-redis5/ ./redis

修改配置文件
a.设置ip地址

bind 0.0.0.0 

b.关闭保护模式

protected-mode no 

c.启动守护进程

daemonize yes 

设置工作目录
先创建工作目录

mkdir -p /var/lib/redis

再在配置文件中,设置工作目录

dir /var/lib/redis

设置日志目录
先创建日志目录

mkdir -p /var/log/redis/ 

再在配置文件中,设置日志目录.

logfile /var/log/redis/redis-server.log 

启动redis

redis-server /etc/redis/redis.conf 

停止redis
先查看到redis-server的pid

ps aux | grep redis 

然后通过kill命令直接杀死redis进程

kill 进程id 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMNLP 2023 亮点回顾:大模型时代下的 NLP 研究

作为自然语言处理(NLP)领域的顶级盛会,EMNLP 每年都成为全球研究者的关注焦点。2023 年的会议在新加坡举行,聚集了数千名来自世界各地的专家学者,也是自疫情解禁以来,中国学者参会最多的一次。巧的是&#…

English phrase

more challenging yet more practical 更有挑战性但是更符合实际的pairwise 成对的fine-grained 精细的manifold 流形zero shot learning 0样本学习narrow the gap 缩小差距w.r.t with respect to 考虑到be different from in 跟某些人在某些方面不同,例如&#xff…

appium工具相关

一、appium基本介绍 1、appium 基本介绍 定义:appium 就是一款非常流行和好用的第三方工具,通过该工具我们可以配合 python 脚本实现 IOS / Android 多平台的APP 自动化测试。作用:在编写测试脚本的PC机和运行 APP 的真机或设备之前充当一个…

CSS操纵元素的禁用和启用

通常表单控件都会有属性readonly、disabled对元素进行只读、禁用等操作。 而有时候我们想要div也达到类似效果,可以用CSS样式pointer-events: none进行控制。 科普知识 CSS样式的pointer-events: none用于控制一个元素能否响应鼠标操作。当该属性设置为none时&am…

DC-8靶场

目录 DC-8靶场链接: 首先进行主机发现: sqlmap得到账号密码: 反弹shell: exim4提权: Flag: DC-8靶场链接: https://www.five86.com/downloads/DC-8.zip 下载后解压会有一个DC-8.ova文件…

js中BOM对象

BOM操作: 概念:BOM操作的时候,操作的整个浏览器,浏览器被封装成一个对象,这个对象就是window。 window对象就是顶级对象。 window对象的特点为:凡是window对象中的属性或方法,window顶级对象…

bash数组的用法

一、单纯数组 #!/usr/bin/env bash#1、定义一个空数组 my_array()#2、增。使用 运算符将元素添加到数组的末尾 my_array("value1") my_array("value2") my_array("value3")#3、增。还可以使用一行的方式一次性添加多个元素到数组 my_array(&qu…

程序员的20大Git面试问题及答案

文章目录 1.什么是Git?2.Git 工作流程3.在 Git 中提交的命令是什么?4.什么是 Git 中的“裸存储库”?5.Git 是用什么语言编写的?6.在Git中,你如何还原已经 push 并公开的提交?7.git pull 和 git fetch 有什么…

C语言 字符串处理相关函数大汇总之(16~20)

16&#xff0c;strlwr 函数&#xff0c;将字符串中的大写字母转换为小写字母。 它位于 <string.h> 头文件中。 函数原型如下&#xff1a; char *strlwr(char *str); 参数&#xff1a; str&#xff1a;要转换的字符串。 返回值&#xff1a; 返回指向转换后的字符串的…

世微AP8105 低功耗PFM DC-DC变换器 升压芯片多种分装

概述 AP8105系列产品是一种效率、低纹波、工作频率高的PFM升压DC-DC变 换器。AP8105系列产品仅需要四个元器件&#xff0c;就可完成将低输入的电池电压变换升压到所需的工作电压&#xff0c;非常适合于便携式1&#xff5e;4节普通电池应用的场合。 电路采用了高性能、低功耗…

Oracle中的dblink简介

Oracle中的dblink简介 是一种用于在不同数据库之间进行通信和数据传输的工具。它允许用户在一个数据库中访问另一个数据库中的对象&#xff0c;而无需在本地数据库中创建这些对象。 使用dblink&#xff0c;用户可以在一个数据库中执行SQL语句&#xff0c;然后访问另一个数据库中…

猫粮什么品牌好?业内人生分享五个口碑好质量好主食冻干猫粮牌子

随着养猫的人越来越多&#xff0c;铲屎官们对猫咪的饮食也越来越注重。除了猫粮&#xff0c;很多铲屎官还会给猫咪准备小零食。那么&#xff0c;猫咪是不是除了猫粮就没有其他可吃的了呢&#xff1f;答案当然不是。猫咪还有猫冻干、冻干猫粮、猫条等可以选择。每个铲屎官都希望…

Java发起SOAP请求代码参考

目录 Java发起SOAP请求代码参考 代码1.组装参数2.加密参数3.发起连接4.解析返回数据 参考 文章所属专区 超链接 代码 1.组装参数 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&qu…

petalinux2021.1 手动打包BOOT.BIN

在我们单独调试u-boot或者fsbl或者R5程序时只需要编译生成elf后打包生成BOOT.bin&#xff0c;那么打包生成BOOT.bin的方式除了petalinux-package还可以参照Vitis流程使用bootgen工具&#xff0c;该工具在source了Vitis环境变量后就可以使用了。 使用bootgen主要就是要bif格式的…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价&#xff08;中位数贪心 回文数判断&#xff09;2968. 执行操作使频率分数最大&#xff08;中位数贪心 前缀和 滑窗&#xff09; 复盘与一周总结 wa穿了第3题&#xff0c;赛时其实想到了思路&#xff1a;中位数贪心…

软考论文评分标准,究竟是什么?

软考论文的评分标准 软考论文具体评分时&#xff0c;参照每一试题相应的“解答要点”中提出的要求&#xff0c;对照下述5个方面评分&#xff1a; 1.贴合题意&#xff08;占比30%&#xff09; 不论是技术、理论或是实践论文&#xff0c;都需要紧扣主题展开深入探讨。 2.应用…

【Linux】如何在 Linux 终端中复制粘贴

Linux 终端中复制粘贴 一、在终端中使用 键盘快捷键 进行复制粘贴 CtrlShiftC/V二、在终端中复制和粘贴的另一种方法是使用&#xff1a;右键单击上下文菜单 。三、在Linux终端 使用鼠标中键&#xff08;滚轮&#xff09;复制粘贴四、为什么 Linux 终端不使用“通用”的 CtrlC 和…

类和动态内存分配

. 7. 解决赋值的问题 对于由于默认赋值操作符不合适而导致的问题,解决办法是提供赋值操作符(进行深度复制)定义。 其实现与复制构造函数相似,但也有一些差别。 ● 由于目标对象可能引用了以前分配的数据,所以函数应使用delete[]来释放这些数据。 函数应当避免将对象赋给自身;否…

损失函数中正则化中的平方项的作用!!

正则化上的平方项 前言在损失函数中添加正则化项时&#xff0c;通常会使用平方项作为正则化项&#xff0c;原因主要有以下几点&#xff1a; 前言 在损失函数中添加正则化项的原因主要是为了防止过拟合。正则化是一种常用的防止过拟合的技术&#xff0c;它可以对模型的复杂度进…

企业网站需不需要用到在线客服系统?

现如今&#xff0c;企业网站已成为企业展示形象、宣传产品和服务的重要窗口。在与客户互动的过程中&#xff0c;在线客服系统发挥着越来越重要的作用。那么&#xff0c;企业网站是否需要用到在线客服系统呢? 一、在线客服系统的优势 1.提高客户满意度 在线客服系统能够实现与客…