redis学习1
一、redis简介
-
redis采用的是K-V模型存储数据的。
-
redis是一个用C语言编写的,基于内存运行并支持持久化的、高性能的NOSQL数据库,也是当前热门的数据库之一。
-
redis中的数据大部分时间都是存储在内存中的,适合存储频繁访问、数据量比较小的数据。
-
占用端口6379
二、redis的特点
-
支持数据持久化,可以将内存中的数据保存到磁盘中
-
支持多种数据结构,不仅支持简单的key-value类型数据,同时还提供list、set、zset、hash等数据结构的存储
-
支持数据备份,即master-slave模式的数据备份
三、redis的下载与安装
-
redis的下载
2.解压redis压缩包
tar xf redis-6.0.6.tar.gz
3.进入到解压目录
cd cd /opt/redis-6.0.6/
4.进行编译安装
make ##如果编译未成功则安装对应的依赖包,然后清理上次编译产生的文件,再次编译
make distclean ##清理上次编译产生的文件
5.如果还出现错误则是gcc版本过低,按如下命令更新gcc原因是因为gcc版本过低,yum安装的gcc是4.8.5的。因此需要升级gcc,升级过程如下:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
gcc -v
6.成功编译后再执行编译安装
make install
6.启动resid
redis-server ##前台启动
redis-server & ## 后台启动
四、redis的使用
1、redis的启动
1)前台启动:在任何目录下执行 redis-server
2)后台启动:在任何目录下执行 redis-server &
3)启动redis服务时,指定配置文件:redis-server redis.conf &
2、关闭redis服务
1)通过kill命令,先查看PID
[root@localhost bin]# ps -ef |grep redis
root 52306 51803 0 03:04 pts/3 00:00:01 redis-server *:6379
root 52556 51803 0 03:20 pts/3 00:00:00 grep --color=auto redis
kill -9 53206
2)通过redis-cli关闭
redis-cli shutdown
3、客户端连接服务端
redis-cli:是resid自带客户端,直接输入命令直接连接
redis-cli -p m -h n:连接端口号m,IP地址为n的redis服务
4、redis的基本知识
1)测试redis服务的性能
[root@localhost ~]# redis-benchmark
2)查看redis服务是否正常运行,结果为PONG则为正常
[root@localhost ~]# redis-cli
127.0.0.1:6379> ping
PONG
3)查看redis服务器的统计信息
127.0.0.1:6379> INFO ##查看所有信息
127.0.0.1:6379> INFO replication ##查看集群信息,看是主是备,看有几个备库
4)redis的数据库实例,作用类似于mysql的数据库实例,redis中的数据库实例只能由redis服务来创建和维护,开发人员不能修改和自行创建数据库实例,默认情况下,redis会自动创建16个数据库实例,并且给这些数据库实例进行编号,从0开始一直到15;可以通过配置文件指定redis自动创建的数据库个数。
-
默认情况下客户端连接的是第0号实例
-
切换数据库实例从0到1:
127.0.0.1:6379> SELECT 1
OK
5)写入数据命令set
127.0.0.1:6379> set K1 V1
OK
6)查看写入数据 get
127.0.0.1:6379> get K1
"V1"
7)查看当前数据库实例中素有Key的数量:dbsize
127.0.0.1:6379> dbsize
(integer) 5
8)查看当前数据库实例中所有的key:keys
127.0.0.1:6379> keys *
1) "K1"
2) "myhash:{tag}:__rand_int__"
3) "counter:{tag}:__rand_int__"
4) "mylist:{tag}"
5) "key:{tag}:__rand_int__"
9)清空数据库实例:flushdb
127.0.0.1:6379> FLUSHDB
OK
10)清空所有数据库实例:flushall
127.0.0.1:6379> FLUSHDB
OK
11)查看redis的配置信息:config get *
五、redis的数据结构
-
java里的数据类型
字符串:zhangsan lisi 20
list列表:322134234 zs@163.com 213423
set集合:beijing shanghai conqing
-
redis里的数据类型
string 单key:单value的形式:username:zhangsan age:20
list 单key:多有序value:lianxidianhua:2142421,1234234,1234234
set 单key:多无序value:zhixiashi:beijing shanghai chongqing
hash 单key:对象:student:id:1001,name:zhangsan,age:20
zset 单key:多有序:zhixiash:200 beijing,1500 shanghai,1000 shanghail
六、redis的配置文件
1、redis配置文件中关于网路的配置
1) port:指定redis服务所使用的端口,默认是6379
2) bind:配置客户端连接redis服务时,所能使用的ip地址,而且通常是一个真是的ip地址
-
如果以上配置都配置了,则连接时需要指定ip及端口
-
redis-cli -h 192.168.127.6 -p 6380
-
如果修改ip及端口配置后,关闭redis服务也需要指定ip及端口
-
redis-cli -h 192.168.127.6 -p 6380 shutdown
3)tcp-keepalive:TCP保活策略,单位为秒。假设设置为60则srver会每60秒向客户端发起一次ACK请求,检查客户端是否挂掉,对于无响应的则会将其链接关闭。
2、常规配置:
1)loglevel:配置日志级别,开发阶段配置为debug级别,警告级别为warning
2)logfile:指定日志文件“sys.log”重启redis会自动在安装目录下创建日志文件
3)databases:配置redis服务创建数据库实例的个数,默认是16个。
3、安全配置
requirepass:配置redis的访问密码,默认不配置密码,即访问不需要密码验证。此配置项需要在protectde-mode=yes时起作用。使用密码登录客户端:redis-cli -h ip -p 6379 - a 123
七、redis的持久化
1、RDB策略
在指定时间间隔内,redis服务执行指定次数的写操作,会自动出发一次持久化操作,以秒为单位。RDB策略是redis默认开启的。默认生成的文件是dump.rdb
save 900 1 ##900秒改一次触发持久化操作
save 300 10
save 60 10000
dbfilename:redis持久化数据生成的文件名,默认是dump.rdb,也可以自己设置
dir:redis持久化数据生成文件保存的目录,默认是./即redis时启动目录,也可以自己配置
2、AOF策略
采用操作日志来记录进行每一次写操作,每次redis服务启动时,都会重新执行一次操作日志中的指令。
1)appendonly:配置是否开启AOF,yes是开,no是关。
2)appendfilename:AOF保存文件名
3)appendfsync:AOF异步持久化策略
4)no-appendfsync-on-rewrite:重写时是否可以运用appendsync,默认no,可以保证数据的安全性。
5)auto-aof-rewrite-precentage:设置重写的基准百分比
6)auto-aof-rewrite-min-size:设置重写的基准值。
八、主从关系设置
1、设从不设主,在从机上执行:slaveof 主ip 主端口
例:slaveof 192.168.44.126 6379
2、主机宕机不影响从机读,从机宕机需要重新设置与主机的关系
3、当主机无法修复时,找一台从机断开与主机的关系
执行:slaveof no one
再修改其他从机的主从关系,将关系关联到新主机上
九、哨兵模式
主机宕机从机自动上位
搭建步骤:1)首先搭建一主多从集群
2)提供烧饼配置文件
在redis安装目录下创建配置文件(名字随便):redis—shaobing.conf
在配置文件里添加:sentinel monitor dc-redis 主redis的地址 端口 1 例子:sentinel monitor dc-redis 127.0.0.1 6379 1
3)在哨兵服务器上执行:redis-sentinel redis—shaobing.conf &