欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis数据库1

程序员文章站 2022-05-04 08:44:45
大纲:理论:数据库分类Redis重要特性redis应用场景实验:安装redisredis基本操作命令redis持久化redis 主从复制一、数据库分类关系型: mysql oracle sqlserver db2 postgresql非关系型:redis mongo ES二、Redis重要特性1.速度快 c语言写的 代码优雅 单线程架构2.支持多种数据结构 字符串,哈希,列表,集合,有序集合3.丰富的功能 天然计数器 健过期功能...

大纲:

理论:

  • 数据库分类
  • 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

相关标签: Linux架构