中间件之redis

https://blog.csdn.net/weixin_45912307/article/details/120604552

1. 基础概念

  1. NoSql和SQL
  • 区别:
    • 关系型数据库:mysql、oracle
      • 数据之间有关联关系
      • 数据存储在硬盘的文件上
    • 非关系型数据库
      • 数据直接没有关联关系
      • 数据存储在内存中
  • 联系
    • 关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库
    • 让NoSQL数据库对关系型数据库的不足进行弥补。
    • 一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据
  1. 什么是redis
    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
    • 字符串类型 string
    • 哈希类型 hash : map格式
    • 列表类型 list : linkedlist格式。支持重复元素
    • 集合类型 set : 不允许重复元素
    • 有序集合类型 sortedset:不允许重复元素,且元素有顺序

2. redis安装(docker容器方式)

  1. 拉取redis镜像:docker pull redis

  2. 创建并启动redis容器;默认端口是6379,如果需要外部访问则可以使用端口映射:

    • 创建容器:docker run -di --name=myredis -p 6379:6379 redis
    • 进入容器:docker exec -it myredis /bin/bash
  3. 连接redis: ①使用命令行客户端 ②使用图形界面工具

    • 命令行方式:
      • /urs/local/bin/redis-cli
  4. 校验redis是否连接成功:set usernam aa

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. redis命令操作

1. 字符串类型 string

  • 存储: set key value
  • 获取: get key
  • 删除: del key

在这里插入图片描述

2. 哈希类型 hash

  • 存储:
    • 单个值:hset key field value
    • 多个值:hmset key field1 value1 field2 value2 ... ...
  • 获取:
    • hget key field: 获取指定的field对应的单个值
    • hmget key field1 field2 ...: 获取指定的field对应的单个值
    • hgetall key:获取所有的field和value
  • 删除:hdel key field

在这里插入图片描述
在这里插入图片描述

3. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)

  • 添加:
    • lpush key value: 将元素加入列表左表
    • rpush key value:将元素加入列表右边
  • 获取:
    • lrange key start end :范围获取
  • 删除:
    • lpop key: 删除列表最左边的元素,并将元素返回
    • rpop key: 删除列表最右边的元素,并将元素返回

在这里插入图片描述

5. 集合类型 set : 不允许重复元素

  • 存储:sadd key value
  • 获取:smembers key:获取set集合中所有元素
  • 删除:srem key value:删除set集合中的某个元素

在这里插入图片描述

6. 有序集合类型 sortedset:不允许重复元素,且元素有顺序。每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

  • 存储:zadd key score value
  • 获取:zrange key start end [withscores]
  • 删除:zrem key value

在这里插入图片描述

7. 通用命令

  • keys * : 查询所有的键
    -type key: 获取键对应的value的类型
  • del key:删除指定的key value

在这里插入图片描述

4. 核心配置

  • 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
    bind 127.0.0.1
  • 端⼝,默认为6379
    port 6379
  • 是否以守护进程运⾏
    • 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
    • 如果以⾮守护进程运⾏,则当前终端被阻塞
    • 设置为yes表示守护:daemonize yes
  • 数据⽂件
    dbfilename dump.rdb
  • 数据⽂件存储路径
    dir /var/lib/redis
  • ⽇志⽂件
    logfile “/var/log/redis/redis-server.log”
  • 数据库,默认有16个
    database 16
  • 主从复制,类似于双机备份。
    slaveof

5. 与python交互

  1. 安装redis:pip install redis
    在这里插入图片描述
    在这里插入图片描述
  2. list - 添加、获取
from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #添加键mylist01,值为1,3,5,7,11
        res=sr.lpush('mylist01',1,3,5,7,11)
        #输出响应结果,如果添加成功则返回True,否则返回False
        print(res)
        # 获取列表全部值
        ret = sr.lrange('mylist01',0,-1)
        print(ret)
    except Exception as e:
        print(e)

在这里插入图片描述

6 主从搭建

1. 官网下载redis.conf配置文件,默认下载到当前目录

  • wget http://download.redis.io/redis-stable/redis.conf
    在这里插入图片描述
    在这里插入图片描述

2. 复制配置文件

  • mkdir root/redis
  • mv redis.conf /root/redis
  • cd /root/redis
  • cp redis.conf redis-master.conf
  • cp redis.conf redis-slave.conf
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3. 编辑主库redis-master.conf文件

  • 查看容器id ip
    • docker ps
    • docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/容器ID
  • vi redis-master.con 配置文件修改以下内容
    bind 172.17.0.1
    port 6300
    daemonize yes
    

在这里插入图片描述
4. 编辑从库redis-slave.conf文件

  • 查看容器id ip
    • docker ps
    • docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/容器ID
  • vi redis-master.con 配置文件修改以下内容
    bind 172.17.0.2
    port 6301
    daemonize yes
    slaveof 172.17.0.1 6300
    

在这里插入图片描述
5. 运行redis-master

	# 运行服务
	docker run -it --name redis-master -v /root/redis/redis-master.conf:/usr/local/etc/redis/redis-master.conf -d -p 6300:6379 redis /bin/bash
	# 进入容器
	docker exec -it redis-master bash
	# 加载配置
	redis-server /usr/local/etc/redis/redis-master.conf
	# 切到客户端连接文件所在目录
	cd /usr/local/bin
	# 测试连接
	redis-cli -h 172.17.0.1 -p 6300

在这里插入图片描述
在这里插入图片描述
6. 运行redis-slave

	# 运行服务
	docker run -it --name redis-slave -v /root/redis/redis-slave.conf:/usr/local/etc/redis/redis-slave.conf -d -p 6301:6379 redis /bin/bash
	# 进入容器
	docker exec -it redis-slave bash
	# 加载配置
	redis-server /usr/local/etc/redis/redis-slave.conf
	# 切到客户端连接文件所在目录
	cd /usr/local/bin
	# 测试连接
	redis-cli -h 172.17.0.2 -p 6301

在这里插入图片描述
7. 查看主从关系
info Replication

  • 主库
    在这里插入图片描述
  • 从库
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值