Redis企业级开发与运维-初识Redis

网友投稿 791 2023-05-20

Redis企业级开发与运维-初识Redis

Redis企业级开发与运维-初识Redis

Redis概述

Redis的作者Salvatore Sanfilippo在开发一个叫做LLOOGG的网站时,需要实现一个高性能的队列功能,最开始是使用MySQL实现,但是无论怎么优化SQL语句也没办法提高网站的性能,后来决定做一个专属于LLOOGG的数据库,这个就是Redis的前身,后来将Redis1.0的源码开放到GitHub上。redis github

Redis是一种开源、基于键值对(key-value)的NoSQL数据库,但是与很对键值对数据库不同的是Redis中的值可以由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成。而且因为Redis会将所有的数据放在内存中,所以它的读写性能是惊人的,不仅如此,Redis还可以将内存中的数据利用快照和日志的形式保存到硬盘上,这样发生类似断点或者是机器故障的时候,内存中的数据不会丢失。除此以外Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。redis官网

目前国外的Github、stackoverflow、Twitter以及国内的阿里巴巴、***、新浪、美团、百度等都在使用Redis,无论你是开发人员还是运维人员Redis已经是你必须要掌握的一项技能。

Redis特性

速度快Redis的数据存储在内存中,而内存的IO性能相比普通磁盘和固态磁盘的IO性能要高得多,这也是Redis高性能最主要的原因,而且Redis是使用C语言开发的,C语言相对于其他语言运行效率更高。同时采用单线程的架构,也避免了多线程可能产生的竞争问题。持久化Redis的数据存储在内存中,容易造成机器断点后丢失数据,因此提供了持久化的功能,用于对数据的更新将异步的保存在磁盘上。多种数据结构Redis提供了string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成。支持多种主流的编程语言Java,Python,Go,Scala,Lua等主流编程语言功能丰富支持发布订阅、Lua脚本、事务以及pipline等功能简单Redis单机版的核心代码23000行,不依赖外部的库,使用单线程模型。主从复制Redis提供了主从复制的功能,实现将服务器的数据复制到从服务器上,也是实现高可用和分布式的基础。高可用、分布式Redis在2.8版本以后提供了Redis-Sentinel来支持高可用。Redis3.0提供了Redis-Cluster来支持分布式。

Redis典型的应用场景

缓存系统计数器(例如微博的转发数、评论数)简单的消息队列系统排行榜社交网络实时系统

Redis单机安装

本次演示的环境是基于CentOS7.8和Redis6.0.5,Redis官方没有提供Windows版本的下载

在安装Redis之前,首先需要下载Redis6.0.5

使用wget命令将redis6.0.5下载到/opt/soft目录下

下载完成以后解压redis6.0.5

[root@ittimeline opt]# tar -xzf redis-6.0.5.tar.gz  [root@ittimeline opt]# ll|grep redis drwxrwxr-x. 7 root root      4096 6月   9 18:19 redis-6.0.5 -rw-r--r--. 1 root root   2217666 6月  27 23:51 redis-6.0.5.tar.gz

解压缩完成之后建立一个软链接,方便管理和升级

[root@ittimeline opt]# ln -s redis-6.0.5 redis [root@ittimeline opt]# ll|grep redis lrwxrwxrwx. 1 root root        11 7月   4 18:07 redis -> redis-6.0.5 drwxrwxr-x. 7 root root      4096 7月   4 18:04 redis-6.0.5 -rw-r--r--. 1 root root   2217666 6月  27 23:51 redis-6.0.5.tar.gz

然后进入redis的目录使用make&&make install进行编译和安装

[root@ittimeline opt]# cd redis [root@ittimeline redis]# pwd /opt/redis  [guanglei@ittimeline redis]$ make&&make install

如果在编译时出现如下错误提示

需要执行如下命令

然后再执行make&&make install命令安装redis

编译安装完成后在/opt/redis/src目录下生成几个常用的可执行文件

[root@ittimeline redis]# cd src/ [root@ittimeline src]# pwd /opt/redis/src [root@ittimeline src]# ll|grep redis* 匹配到二进制文件 redis-benchmark 匹配到二进制文件 redis-check-aof 匹配到二进制文件 redis-check-rdb 匹配到二进制文件 redis-cli 匹配到二进制文件 redis-sentinel 匹配到二进制文件 redis-server

redis-server redis服务器redis-cli redis客户端redis-benchmark (基准测试)redis-check-aof (aof持久化修复工具)redis-check-dump(RDB文件检查工具)redis-sentinel(Redis Sentinel服务器)

Redis三种启动方法

在Redis编译、安装完成以后,可以使用最简启动、动态参数启动和配置文件启动三种方式启动。

最简启动

直接在Linux终端上的任意路径输入redis-server命令就可以启动Redis服务器,此时默认的端口是6379。

[root@ittimeline src]# redis-server

redis服务器成功启动

Redis启动的验证方法

ps -ef|grep redis netstat -antpl|grep redis redis-cli -h ip -p port ping

动态参数启动

如果想要使用动态参数的方式启动,只需要在redis-server 后面加上参数即可,例如redis-server --port 6380

当执行此条命令时,redis服务器就会使用6380端口启动。

redis-server --port 6380

当Redis服务启动成功后,可以使用命令ps -ef|grep redis-server|grep -v grep命令来查看redis-server的进程信息

[root@ittimeline ~]# ps -ef|grep redis-server|grep -v grep root      17483  16967  0 18:17 pts/1    00:00:00 redis-server *:6379 root      17743  17696  0 18:29 pts/3    00:00:00 redis-server *:6380

也可以使用命令netstat -antpl|grep redis-server 来查看redis-server的端口信息

[root@ittimeline ~]# netstat -antpl|grep redis-server tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      17483/redis-server   tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      17743/redis-server   tcp        0      0 127.0.0.1:6379          127.0.0.1:36548         ESTABLISHED 17483/redis-server   tcp6       0      0 :::6379                 :::*                    LISTEN      17483/redis-server   tcp6       0      0 :::6380                 :::*                    LISTEN      17743/redis-server

配置文件启动

生产环境建议使用配置文件启动,因为单机多实例配置文件可以使用端口区分开。

首先在/opt/redis目录下创建一个config目录

然后将redis的配置文件redis.conf复制到/opt/redis/config/目录下

[root@ittimeline redis]# mkdir config [root@ittimeline redis]# cp redis.conf  ./config/redis.conf

然后将/opt/redis/config的redis.conf文件重命名,根据端口区分不同的配置

[root@ittimeline config]# mv redis.conf  redis-6381.conf  [root@ittimeline config]# ll 总用量 84 -rw-rw-r--. 1 root root 82645 7月   4 18:44 redis-6381.conf

然后使用命令简化(删除注释的说明)redis-6381.conf的内容并重定向到redis-6382.conf文件中

[root@ittimeline config]# cat redis-6381.conf |grep -v "#" |grep -v "^$" >redis-6382.conf

可以使用命令vim -d redis-6381.conf redis-6382.conf来比较两个文件的差异后理解上述命令的作用

redis服务端常用配置选项说明

redis.conf配置文件中提供了许多redis服务器运行的配置,目前现阶段只要关注如下配置即可。

daemonize 是否是守护进程,默认是no,建议设置为yesport 启动端口,单机多实例必须配置,默认端口是6379logfile Redis系统日志dir Redis工作目录, 日志文件、持久化文件存储路径

redis-6382.config配置内容

[root@ittimeline config]# cat redis-6382.conf  daemonize yes port 6382 dir "/opt/redis/data" logfile "redis-6382.log" ~

在启动服务之前需要在/opt/redis目录下创建data目录

[root@ittimeline config]# mkdir /opt/redis/data

然后使用指定配置文件启动的方式启动redis服务器,并使用ps命令查看6382端口的redis-server进程是否启动

[root@ittimeline config]# redis-server redis-6382.conf  [root@ittimeline config]# ps -ef|grep redis-server|grep 6382 root      18645      1  0 19:10 ?        00:00:00 redis-server *:6382

服务启动之后可以使用cat命令来查看redis-server的服务启动日志

Redis客户端连接

使用redis-cli工具连接redis服务器,通过-p选项指定redis服务器的端口,通过-h指定服务器的主机,127.0.0.1表示本机,即客户端和服务器在同一台服务器上。

[root@ittimeline ~]# redis-cli  -p 6379 -h 127.0.0.1 127.0.0.1:6379>

当客户端连接服务器成功之后就可以使用set/get命令来设值和取值,当输入set命令时客户端会提示set命令的使用方法。

设置name属性的值为tony

127.0.0.1:6379> set name tony

set值以后就可以使用get来获取对应的属性值

127.0.0.1:6379> get name "tony"

当客户端输入ping时,服务端会返回PONG

127.0.0.1:6379> ping PONG

如果客户端想要退出,只需要输入exit就可以。

exit

退出连接

redis-cli客户端连接服务端默认的端口是6379,默认的ip就是127.0.0.1,因此如果客户端和服务端在一台机器上时,直接输入redis-cli就可以连接redis服务器。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:云数据库怎么实现?一篇详细的解释
下一篇:MySQL: 喂,别走,听我解释一下好吗?
相关文章