redis学习—redis简介和安装
redis是一个key-value存储系统。和Memcached类似,它支持存储的values类型相对更多,包括字符串、列表、哈希散列表、集合,有序集合。
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
redis运行的本质:将数据存储在内存中
用途:redis可以做缓存,redis可以做消息列队
特性:
-
可以做持久化:在配置文件设置,如果你要保存到文件,可添加设置,就算电脑不小心关机了,数据还是在的。这个要不要保存都是自己来定的。
-
支持存放数据的格式多(5种格式)
{ 'k1':'hiayna', # 第一种字符串格式 'k2':[11,22,33,44], # 第二种列表格式 'k3':{11,22,33,44}, # 第三种集合格式 'k4':{ # 第四种,字典,也可以叫做哈希散列表, 'n1':'xxx', 'n2':'fff' }, 'k5':{(11,1),('xxx':5)} #有序集合 }
redis也称为nosql:不仅仅是sql,一般数据复杂的存储用mysql,而经常使用的热数据用redis存储。
二、为什么使用redis
1.redis的优势
-
速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
-
支持丰富数据类型,支持string,list,set,sorted set,hash
-
支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
-
丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
2.与memcache的区别
-
memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
-
redis的速度比memcached快很多
-
redis可以持久化其数据
三、redis的安装
1.yum安装redis
安装方法
安装前提:使用阿里云yum源、epel源。
使用yum自带的源,下载速度可能比较慢,是否用阿里源都可以。
# 查看是否安装了redis yum list redis # 如果想要卸载之前的版本 yum remove redis # 安装redis yum install redis -y # 启动redis systemctl start redis
检查redis工作状态
redis-cli # redis客户端工具,连接redis
# 进入交互环境后,执行ping,返回pong表示安装成功 127.0.0.1:6379 > ping PONG
2.编译安装redis源码包
有人会问,既然yum这么好用,为什么还需要源码安装?
编译安装的优势:
-
编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
-
编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
-
软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
# 1.下载redis源码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz # 2.解压缩 tar -zxf redis-4.0.10.tar.gz # 3.切换redis源码目录 cd redis-4.0.10.tar.gz # 4.编译源文件makefill,之前我们是通过执行configure生成makefile,redis包里面直接有makefile,所以不需要执行configure,也就是configure。 make # 5.编译好后,src/目录下有编译好的redis指令 # 6.make install 安装到指定目录,默认在/usr/local/bin
默认配置文件的redis使用方式
# 1.启动redis服务 redis-server # 2.redis服务会在前端运行,通过另一个窗口连接 redis-cli # 进入redis交互环境 ping --> PONG # 回复了PONG代表成功
安装完后,会默认添加到环境变量中。
redis的可执行文件
./redis-benchmark # 用于进行redis性能测试的工具 ./redis-check-dump # 用于修复出问题的dump.rdb文件 ./redis-cli # redis的客户端 ./redis-server # redis的服务端 ./redis-check-aof # 用于修复出问题的AOF文件 ./redis-sentinel # 用于集群管理
3.npm安装
npm包是通过npm包来安装,但是需要手动解决依赖问题,不太推荐。
4.redis的安全配置
如何定制一个安装可靠的redis数据库:
-
更改端口
-
设置密码
-
开启redis的安全启动模式
自定义配置文件核心项
对redis的配置文件进行修改,这里我们使用的编译安装的redis,所以配置文件在/opt/redis-4.0.10/redis.conf。
默认的配置文件很多不必要,这里我们新建一个配置文件,写入我们自己定义的配置项,通过自定义的配置文件启动安全的redis。
vim myredis.conf # 新建myredis.conf文件 # 绑定ip,如需要远程访问,需要填写服务器ip bind 192.168.16.122 # 端口,redis启动端口 port 6380 # 以守护进程方式在后台运行 daemonize yes # redis日志文件存储位置 logfile /var/log/redis/redis-server.log # 设置redis启动密码 requirepass 123 # 打开保护模式 protected-mode yes # 主从复制 # slaveof
通过自定配置文件启动redis服务端
启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件
redis-server /opt/redis-4.0.10/myredis.conf
在默认情况下,redis-server会以非daemon的方式来运行,且默认端口6379
redis后台运行的两种方式
-
通过配置文件设置daemonize=True,通过配置文件启动redis服务器。这种方式进入的后台运行无法退出。
-
启动redis服务器的时候在尾巴添加一个参数:&
redis-server /opt/redis-4.0.10/myredis.conf &
退出后台运行命令:
fg # 将所有后台工作进程推到前台显示
由于我们在自定义的配置文件中设置了密码,修改了端口,所以客户端在连接redis服务器的时候需要指定地址和端口连接
redis-cli -p 6380 -h 192.168.16.122 # 指定地址和端口启动 # 验证配置文件的密码登录,才能正常使用redis auth 123