redis数据库1
大纲:
理论:
- 数据库分类
- Redis重要特性
- redis应用场景
实验:
- 安装redis
- redis基本操作命令
- redis持久化
- redis 主从复制
一、数据库分类
关系型: mysql oracle sqlserver db2 postgresql
非关系型:redis mongo ES
二、Redis重要特性
1.速度快 c语言写的 代码优雅 单线程架构
2.支持多种数据结构 字符串,哈希,列表,集合,有序集合
3.丰富的功能 天然计数器 健过期功能 消息队列
4.支持客户端语言多 php,java,python
5.数据持久化 所有的数据都运行在内存中 支持2种格式持久化数据AOF RDB AOF&RDB
6.自带多种高可用架构 主从 哨兵 集群
三、redis应用场景
1.缓存-键过期时间: 把session会话存在redis,过期删除 缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql,然后回写给redis 商城优惠卷过期时间。
2.排行榜-列表&有序集合 热度/点击数排行榜 直播间礼物积分排行
3.计数器-天然支持计数器 帖子浏览数 视频播放数 评论数 点赞/踩
4.社交网络-集合 粉丝 共同好友 兴趣爱好 标签
5.消息队列-发布订阅 配合ELK缓存收集来的日志
四、安装redis
1.安装
[root@localhost ~]# yum -y install gcc gcc-c++
[root@localhost ~]# mkdir -p /data/soft //下载一些应用的目录
[root@localhost ~]# mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid} //放置一些redis文件的目录
[root@localhost ~]# cd /data/soft/
[root@localhost soft]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
[root@localhost soft]# tar zxf redis-5.0.7.tar.gz -C /opt/redis_cluster/
[root@localhost soft]# ln -s /opt/redis_cluster/redis-5.0.7/ /opt/redis_cluster/redis
[root@localhost soft]# cd /opt/redis_cluster/redis
[root@localhost redis]# make && make install //安装
2.配置
[root@localhost ~]# vim /opt/redis_cluster/redis_6379/conf/6379.conf
bind 127.0.0.1 192.168.1.61 #监听IP地址
port 6379 #端口
daemonize yes #守护进程
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid #pid路径
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log #log路径
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379 #数据库位置
3.启动
[root@localhost ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
[root@localhost ~]# netstat -anput | grep redis
[root@localhost ~]# redis-cli //进入数据库
五、redis基本操作命令
1.基本命令1
[root@localhost ~]# redis-cli //进入数据库
127.0.0.1:6379> SET k3 3 #创建键值对k3 值为3
OK
127.0.0.1:6379> GET k3 #查看键值对k3
"3"
127.0.0.1:6379> INCR k3 #键值k3为整数,递增加1
(integer) 4
127.0.0.1:6379> INCRBY k3 10 #递增k3的量值10 (可以自定义递增值)
(integer) 15
127.0.0.1:6379> MSET k1 1 k2 2 k3 3 k4 4 #批量创建键值
OK
127.0.0.1:6379> MGET k1 k2 k3 k4 #批量查看键值
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> DEL k3 #删除键值
(integer) 1
1.基本命令2
127.0.0.1:6379> KEYS * #列出所有键值名,但在企业环境禁止使用
1) "k4"
2) "k2"
3) "k1"
4) "k3"
127.0.0.1:6379> DBSIZE #查看有多少键值数
(integer) 4
127.0.0.1:6379> EXISTS k4 #查看键值是否存在
(integer) 1
127.0.0.1:6379> EXPIRE k4 20 #设置K4过期时间为20秒,20秒后k2自动取消
(integer) 1
127.0.0.1:6379> TTL k4 #查看k4的生命周期
(integer) 10
127.0.0.1:6379> PERSIST k4 #取消k4的过期时间(取消后就是永久的了)
(integer) 1
127.0.0.1:6379> TYPE k4 #查看数据类型
string
3.列表:list
127.0.0.1:6379> RPUSH list1 1 2 3 4 #创建列表list1,值为1 2 3 4
(integer) 4
127.0.0.1:6379> RPUSH list1 5 6 7 8 #在list1右侧添加5 6 7 8
(integer) 4
127.0.0.1:6379> LPUSH list1 0 #在list1左侧添加0
(integer) 5
127.0.0.1:6379> LRANGE list1 0 -1 #查看list1所有值
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
7) "6"
8) "7"
9) "8"
127.0.0.1:6379> RPOP list1 #删除右侧最后一个值
"8"
127.0.0.1:6379> LPOP list1 #删除左侧第一个值
"0"
127.0.0.1:6379> LTRIM list1 0 2 #仅保前三位,其他删除
OK
4.哈希:hash
127.0.0.1:6379> HMSET user:1000 username zhangsan age 17 job it #创建hash键值user:1000
OK
127.0.0.1:6379> HMGET user:1000 username #查看键值中username参数
1) "zhangsan"
127.0.0.1:6379> HMGET user:1000 age #查看键值中age参数
1) "17"
127.0.0.1:6379> HMGET user:1000 job #查看键值中job参数
1) "it"
127.0.0.1:6379> HMSET user:1000 tel 1866666666 #添加值tel
OK
127.0.0.1:6379> HMGET user:1000 tel
1) "1866666666"
5.集合
集合和列表的区别就是:集合不允许有重复的值。
127.0.0.1:6379> SADD set1 1 2 3 #创建集合set1
(integer) 3
127.0.0.1:6379> SMEMBERS set1 #查看集合set1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SADD set1 1 4 #为集合set1添加值1 4 ,但集合特性是去除重复,所以1无法再添加
(integer) 1
127.0.0.1:6379> SREM set1 1 4 #删除集合的值1 4
(integer) 2
127.0.0.1:6379> sadd set2 1 4 5 #创建第二个集合set2
(integer) 3
127.0.0.1:6379> SDIFF set1 set2 #求差集
1) "2"
2) "3"
127.0.0.1:6379> SINTER set1 set2 #求合集(交集)
(empty list or set)
127.0.0.1:6379> SUNION set1 set2 #求并集
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379>
六、redis持久化
RDB
RDB:生成时间点快照,保存于硬盘
优点:速度快,适合做备份,能做主从复制,单开子进程进行rdb操作不影响主业务
缺点:会有部分数据丢失
AOF
AOF:记录所有写操作命令,通过再次执行这些命令还原数据 >优 点:最大程度保证数据不丢失
缺点:日志记录量太大
1…RDB配置:
[root@localhost ~]# vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照
手动触发
触发rdb的话需要满足上面写在配置文件的条件,所以手动触发
127.0.0.1:6379> BGSAVE
[root@localhost ~]# redis-cli shutdown //重启验证数据库内容是否还存在(存在的话就成了)
[root@localhost ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
2.AOF配置
[root@localhost ~]# vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes #启用AOF持久化
appendfilename "redis.aof" #指定AOF文件名
appendfsync everysec #每秒同步一次
#注:配置aof后重启,会把之前使用rdb做的数据清除
[root@localhost ~]# redis-cli shutdown //重启
[root@localhost ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
七、redis 主从复制
环境:
角色 | IP地址 |
---|---|
redis主 | 192.168.1.61 |
reddis 从 | 192.168.1.62 |
配置从redis
[root@redis02 ~]# mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
#从redis配置文件
[root@redis02 ~]# vim /opt/redis_cluster/redis_6379/conf/6379.conf
bind 127.0.0.1 192.168.1.62
port 6379
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379
slaveof 192.168.1.61 6379 #指定主服务器ip加端口号
启动:
[root@redis02 ~]# redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
测试;
主服务器上新建键值,测试从服务器自动同步
从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;
如果从服务器非要修改数据,需要断开同步:
redis-cli slaveof no one
本文地址:https://blog.csdn.net/weixin_45310323/article/details/107589146
下一篇: JVM与JAVA体系结构