• 【Redis使用】一年多来redis使用笔记md文档,第(2)篇:命令和数据库操作


    Redis 是一个高性能的key-value数据库。本文会让你知道:什么是 nosql、Redis 的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中 list 保存的数据类型、使用StrictRedis对象对string类型数据进行增删改查、参考课件步骤搭建 Redis 集群

    全套Redis笔记地址: 请移步这里


    共 1 章,19 子模块


    学习目标

    • 能够写出Redis中string类型数据的增删改查操作命令
    • 能够写出Redis中hash类型数据的增删改查相关命令

    重要文档

    数据结构

    • redis是key-value的数据结构,每条数据都是⼀个键值对
    • 键的类型是字符串
    • 注意:键不能重复

    • 值的类型分为五种:

      • 字符串string
      • 哈希hash
      • 列表list
      • 集合set
      • 有序集合zset

    数据操作行为

    • 保存
    • 修改
    • 删除

    点击中⽂官⽹查看命令⽂档http://redis.cn/commands.html

    学习目标

    • 能够说出Redis中 list 保存的数据类型

    list类型

    • 列表的元素类型为string
    • 按照插⼊顺序排序

    增加

    • 在左侧插⼊数据

    lpush key value1 value2 …

    • 例1:从键为a1的列表左侧加⼊数据a 、 b 、c

    lpush a1 a b c

    • 在右侧插⼊数据

    rpush key value1 value2 …

    • 例2:从键为a1的列表右侧加⼊数据0、1

    rpush a1 0 1

    • 在指定元素的前或后插⼊新元素

    linsert key before或after 现有元素 新元素

    • 例3:在键为a1的列表中元素b前加⼊3

    linsert a1 before b 3

    • 返回列表⾥指定范围内的元素

      • startstop为元素的下标索引
      • 索引从左侧开始,第⼀个元素为0
      • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

    lrange key start stop

    • 例4:键为a1的列表所有元素

    lrange a1 0 -1

    设置指定索引位置的元素值

    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

    lset key index value

    • 例5:修改键为a1的列表中下标为1的元素值为z

    lset a 1 z

    删除

    • 删除指定元素

      • 将列表中前count次出现的值为value的元素移除
      • count > 0: 从头往尾移除
      • count < 0: 从尾往头移除
      • count = 0: 移除所有

    lrem key count value

    • 例6.1:向列表a2中加⼊元素a、b、a、b、a、b

    lpush a2 a b a b a b

    • 例6.2:从a2列表右侧开始删除2个b

    lrem a2 -2 b

    • 例6.3:查看列表a2的所有元素

    lrange a2 0 -1

    set类型

    • ⽆序集合
    • 元素为string类型
    • 元素具有唯⼀性,不重复
    • 说明:对于集合没有修改操作

    增加

    • 添加元素

    sadd key member1 member2 …

    • 例1:向键a3的集合中添加元素zhangsanlisiwangwu

    sadd a3 zhangsan sili wangwu

    • 返回所有的元素

    smembers key

    • 例2:键a3的集合中所有元素

    smembers a3

    删除

    • 删除指定元素

    srem key

    • 例3:删除键a3的集合中元素wangwu

    srem a3 wangwu

    zset类型

    • sorted set,有序集合
    • 元素为string类型
    • 元素具有唯⼀性,不重复
    • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
    • 说明:没有修改操作

    增加

    • 添加

    zadd key score1 member1 score2 member2 …

    • 例1:向键a4的集合中添加元素lisiwangwuzhaoliuzhangsan,权重分别为4、5、6、3

    zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

    • 返回指定范围内的元素
    • start、stop为元素的下标索引
    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

    zrange key start stop

    • 例2:键a4的集合中所有元素

    zrange a4 0 -1

    • 返回score值在minmax之间的成员

    zrangebyscore key min max

    • 例3:键a4的集合中权限值在5和6之间的成员

    zrangebyscore a4 5 6

    • 返回成员memberscore

    zscore key member

    • 例4:键a4的集合中元素zhangsan的权重

    zscore a4 zhangsan

    删除

    • 删除指定元素

    zrem key member1 member2 …

    • 例5:删除集合a4中元素zhangsan

    zrem a4 zhangsan

    • 删除权重在指定范围的元素

    zremrangebyscore key min max

    • 例6:删除集合a4中权限在5、6之间的元素

    zremrangebyscore a4 5 6

    安装包

    安装Redis的有3种方式https://github.com/andymccurdy/redis-py

    • 第一种:进⼊虚拟环境,联⽹安装包redis

    pip install redis

    • 第二种:进⼊虚拟环境,联⽹安装包redis

    easy_install redis

    • 第三种:到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装

    一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip
    unzip master.zip
    cd redis-py-master
    sudo python setup.py install

    调⽤模块

    • 引⼊模块

    from redis import StrictRedis

    • 这个模块中提供了StrictRedis对象,⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作

    StrictRedis对象⽅法

    • 通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
    sr = StrictRedis(host='localhost', port=6379, db=0)
    
    简写
    sr=StrictRedis()
    
    • 1
    • 2
    • 3
    • 4
    • 根据不同的类型,拥有不同的实例⽅法可以调⽤,与前⾯学的redis命令对应,⽅法需要的参数与命令的参数⼀致

    string

    • set
    • setex
    • mset
    • append
    • get
    • mget
    • key

    keys

    • exists
    • type
    • delete
    • expire
    • getrange
    • ttl

    hash

    • hset
    • hmset
    • hkeys
    • hget
    • hmget
    • hvals
    • hdel

    list

    • lpush
    • rpush
    • linsert
    • lrange
    • lset
    • lrem

    set

    • sadd
    • smembers
    • srem

    zset

    • zadd
    • zrange
    • zrangebyscore
    • zscore
    • zrem
    • zremrangebyscore

    学习目标

    • 能够使用StrictRedis对象对string类型数据进行增删改查

    准备

    • 在桌面上创建redis目录
    • 使用pycharm打开 redis目录
    • 创建redis_string.py文件
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
    
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    string-增加

    • ⽅法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False
    • 编写代码如下
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #添加键name,值为itheima
            result=sr.set('name','itheima')
            #输出响应结果,如果添加成功则返回True,否则返回False
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    string-

    • ⽅法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None
    • 编写代码如下
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #键name的值
            result = sr.get('name')
            #输出键的值,如果键不存在则返回None
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    string-修改

    • ⽅法set,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
    • 编写代码如下
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
            result = sr.set('name','itcast')
            #输出响应结果,如果操作成功则返回True,否则返回False
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    string-删除

    • ⽅法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返 回0
    • 编写代码如下
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
            result = sr.delete('name')
            #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    • ⽅法keys,根据正则表达式键
    • 编写代码如下
    from redis import *
    if __name__=="__main__":
        try:
            #创建StrictRedis对象,与redis服务器建⽴连接
            sr=StrictRedis()
            #所有的键
            result=sr.keys()
            #输出响应结果,所有的键构成⼀个列表,如果没有键则返回空列表
            print(result)
        except Exception as e:
            print(e)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    学习目标

    • 能够根据课件中的步骤搭建 Redis 的主从

    主从概念

    • ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构
    • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
    • 通过主从配置可以实现读写分离

    • master和slave都是一个redis实例(redis服务)

    主从配置

    配置主

    • 查看当前主机的ip地址

    ifconfig

    • 修改/etc/redis/redis.conf文件

    sudo vi redis.conf
    bind 192.168.26.128

    • 重启redis服务

    sudo service redis stop
    sudo redis-server redis.conf

    配置从

    • 复制/etc/redis/redis.conf文件

    sudo cp redis.conf ./slave.conf

    • 修改redis/slave.conf文件

    sudo vi slave.conf

    • 编辑内容

    bind 192.168.26.128
    slaveof 192.168.26.128 6379
    port 6378

    • redis服务

    sudo redis-server slave.conf

    • 查看主从关系

    redis-cli -h 192.168.26.128 info Replication

    数据操作

    • 在master和slave分别执⾏info命令,查看输出信息 进入主客户端

    redis-cli -h 192.168.26.128 -p 6379

    • 进入从的客户端

    redis-cli -h 192.168.26.128 -p 6378

    • 在master上写数据

    set aa aa

    • 在slave上读数据

    get aa

    为什么要有集群

    • 之前我们已经讲了主从的概念,一主可以多从,如果同时的访问量过大(1000w),主服务肯定就会挂掉,数据服务就挂掉了或者发生自然灾难
    • 大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房)

    集群的概念

    • 集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

    当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。

    redis集群

    • 分类

      • 软件层面
      • 硬件层面
    • 软件层面:只有一台电脑,在这一台电脑上启动了多个redis服务。

    • 硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。

    搭建集群

    • 当前拥有两台主机172.16.179.130、172.16.179.131,这⾥的IP在使⽤时要改为实际值

    参考阅读

    配置机器1

    • 在演示中,172.16.179.130为当前ubuntu机器的ip
    • 在172.16.179.130上进⼊Desktop⽬录,创建conf⽬录
    • 在conf⽬录下创建⽂件7000.conf,编辑内容如下
    port 7000
    bind 172.16.179.130
    daemonize yes
    pidfile 7000.pid
    cluster-enabled yes
    cluster-config-file 7000_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 在conf⽬录下创建⽂件7001.conf,编辑内容如下
    port 7001
    bind 172.16.179.130
    daemonize yes
    pidfile 7001.pid
    cluster-enabled yes
    cluster-config-file 7001_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 在conf⽬录下创建⽂件7002.conf,编辑内容如下
    port 7002
    bind 172.16.179.130
    daemonize yes
    pidfile 7002.pid
    cluster-enabled yes
    cluster-config-file 7002_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

    • 使⽤配置⽂件启动redis服务

    redis-server 7000.conf
    redis-server 7001.conf
    redis-server 7002.conf
    
    • 1
    • 2
    • 3
    • 查看进程如下图

    配置机器2

    • 在演示中,172.16.179.131为当前ubuntu机器的ip
    • 在172.16.179.131上进⼊Desktop⽬录,创建conf⽬录
    • 在conf⽬录下创建⽂件7003.conf,编辑内容如下
    port 7003
    bind 172.16.179.131
    daemonize yes
    pidfile 7003.pid
    cluster-enabled yes
    cluster-config-file 7003_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 在conf⽬录下创建⽂件7004.conf,编辑内容如下
    port 7004
    bind 172.16.179.131
    daemonize yes
    pidfile 7004.pid
    cluster-enabled yes
    cluster-config-file 7004_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 在conf⽬录下创建⽂件7005.conf,编辑内容如下
    port 7005
    bind 172.16.179.131
    daemonize yes
    pidfile 7005.pid
    cluster-enabled yes
    cluster-config-file 7005_node.conf
    cluster-node-timeout 15000
    appendonly yes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项

    • 使⽤配置⽂件启动redis服务

    redis-server 7003.conf
    redis-server 7004.conf
    redis-server 7005.conf
    
    • 1
    • 2
    • 3
    • 查看进程如下图

    未完待续 下一期下一章

    全套笔记直接地址: 请移步这里

  • 相关阅读:
    通付盾Web3专题 | KYT/AML:Web3合规展业的必要条件
    latex近日问题集锦
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    污水处理工程公司怎么选
    玩转代码|wordpress过滤函数使用方法(防止sql注入)
    堪称最全的Java面试笔记(准备+基础+数据库+框架+面经)
    【算法笔记】树状数组/Binary Indexed Tree/Fenwick Tree
    【HTML学生作业网页】基于HTML+CSS+JavaScript仿南京师范大学泰州学院(11页)
    虚幻引擎:如何使用 独立进程模式进行模拟
    微信小程序开发之入门级02(带你进一步了解微信小程序开发)
  • 原文地址:https://blog.csdn.net/jhjhjz767676/article/details/134518678