• Redis


     
     
     
     
     
     
     
     

    安装与配置


     

    centos7

    环境安装

    # yum install centos-release-scl
     
    # yum install devtoolset-7-gcc*
     
    scl enable devtoolset-7 bash

    安装 redis6

    # wget http://download.redis.io/releases/redis-6.0.6.tar.gz
     
    # tar -zxvf redis-6.0.6.tar.gz
     
    # cd redis-6.0.6
     
    # make

     

    启动 redis,进入到解压后的 src 目录,通过如下命令启动Redis

    # src/redis-server
    在这里插入图片描述

     

    您可以使用内置的客户端与Redis进行交互

    # src/redis-cli
     
    redis> set foo bar
    OK
    redis> get foo
    "bar
    在这里插入图片描述
     
     
     
     

    Redis配置(redis.conf) —— 开启后台运行

    1、进入 redis 目录,编辑 redis.conf
    在这里插入图片描述

     
     

    2、搜索 “daemonized” 并设置为

    daemonized yes

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

     
     

    3、开启后台运行

    cd src
     
    redis-server ../redis.conf

    在这里插入图片描述

     
     

    4、查看是否在后台运行

    ps -aux | grep redis

    在这里插入图片描述

     
     
     
     

    Redis配置(redis.conf) —— 日志级别

    搜索 loglevel,可修改为(debug | verbose | notice | warning )

    loglevel warning

    在这里插入图片描述

     
     
     
     

    Redis配置(redis.conf) —— 数据库数量

    搜索 databases

    databases 16

    在这里插入图片描述

     
     
     
     

    Redis配置(redis.conf) —— 持久化

     
     

    RDB方案

    默认持久化存储的路径为 ~/redis-5.0.4/src/dum.rdb

    rdbcompression yes # 压缩RDB文件
    rdbchecksum yes # 对 RDB 文件进行校验
    dbfilename dump.rdb # RDB数据文件的文件名
    dir /var/local/redis # RDB 文件保存的目录

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

     
     
     
     

    Redis配置(redis.conf) —— 配置数据写入规则

    save 语句的含义

    save 900 1 —— 触发 save 命令的两个条件:

    • 900 秒
    • 1次修改
       

    当两个条件同时满足时,数据从内存写入一次硬盘

    • 900秒内修改过1个key,写入一次数据库

    save 900 1

     
     

    • 300秒内修改过10个key,写入一次数据库

    save 300 10

     
     

    • 60秒内修改过10000个key,写入一次数据库

    save 60 10000

    在这里插入图片描述

     
     

    AOF方案

    AOF(Append only file)持久化,将修改的每一条指令记录进 appendonly.aof中,默认关闭。

    适用于增量数据,数据不丢失。但是文件体积大,恢复时间长

    在这里插入图片描述

    appendonly yes
    appendfsync always # 每次有新命令加到 aof 文件时就执行一个持久化,非常慢 但是安全
    appendfsync everysec # 每秒执行一次持久化,足够快,并且只会丢失1秒数据
    appendfsync no # 从不持久化

     
     
     
     
     
     
     
     

    基础


    学习网址

    • http://redisdoc.com/ —— 中文参考
    • https://redis.io/documentation —— 官方参考

     

    基本概念

    含义:Redis是 Remote dictionary server 的缩写,它是一个用ANSI C 编写的高性能的 key-value 存储系统,与其他的 key-value 存储系统相比,具有以下几个特点

    • 读写性能极高,qps( query per second )可达到 11万
    • 具有丰富的特性(发布/订阅、事务、通知等)
    • 支持多种数据类型,包括 string、hash、list、set、zset、bitmap、hyperloglog 等,并且支持持久化存储
    • 支持主从复制(读写分离)以及哨兵模式(监控master是否宕机并自动调整配置)
    • 支持分布式集群,很容易通过水平扩展来提升系统性能
    • 网络传输基于 TCP 进行通信

     
     
     
     

    数据操作

     

    字符串

    设置字符串

    set key value
    > set name zhangsan
    在这里插入图片描述
     
    # 具有过期时间(以秒为单位)的字符串
    set key value ex seconds
    >set name zhangsan ex 10
    在这里插入图片描述
     
    # 具有过期时间(以毫秒为单位)的字符串
    set key value px milliseconds
    在这里插入图片描述
    # 只有在 key 不存在时,才设置 key
    set key value nx
    >set name zhangsan nx
    >set name lisi nx
    在这里插入图片描述
    # 只有在 key 存在时,才设置 key
    set key value xx
    >set name zhangsan
    >set name lisi xx
    在这里插入图片描述
    # 同时设置多个变量
    mset key1 value1 key2 value2 key3 value3
    >mset name zhangsan age 18 sal 30000
    在这里插入图片描述

    读取变量

    get key
     
    # 获取多个变量
    mget key1 key2 key3…
    >mget name age sal
    在这里插入图片描述

    获取变量的剩余时间

    ttl key
    >set name zhangsan ex 10
    >ttl name
    在这里插入图片描述

    获取所有key

    keys *

    数值自增

    # 数值加1
    incr number_key
    >incr age
    在这里插入图片描述
    # 数值加 n
    incrby number_key n
    >incrby age 10
    在这里插入图片描述

     
     

    哈希表

    # 简单的哈希表
    hset dict_name key1 value1 key2 value2 key3 value3
     
    # 向哈希表中插值
    hset dict_name key1 value1 key3 value3
     
    # 从哈希表中取值
    hget dict_name key1
     
    # 是否存在某键
    hexists dict_name key1 —— 存在返回 true,否则返回 false
     
    # 删除某建
    hdel dict_name key1
     
    # 字典长度
    hlen dict_name
    在这里插入图片描述
     
    # 字典中键对应的值的长度
    hstrlen dict_name key1
    在这里插入图片描述
     
    # 获取所有的键
    hkeys dict_name
    在这里插入图片描述
     
    # 获取所有的值
    hvals dict_name
    在这里插入图片描述
     
    # 获取所有键、值
    hgetall dict_name
    在这里插入图片描述

     
     

    列表

    # 从左侧插入(开始或头部),如下则插入顺序为 value1, value2, value3,列表中元素的顺序为 value3, value2, value1
    lpush list_name value1 value2 value3
    在这里插入图片描述
     
    # 从右侧插入
    rpush list_name value1 value2 value3
    在这里插入图片描述
     
    # 获取列表切片,0开始,-1最后一个
    lrange list_name start_index end_index
     
    # 左侧弹出数据
    lpop list_name
    在这里插入图片描述
    # 右侧弹出数据
    rpop list_name
    在这里插入图片描述
    # 从左侧开始数(最左侧索引为0),修改元素值
    lset list_name ele_index new_value
    在这里插入图片描述

     
     

    集合

    # 添加元素
    sadd set_name value1 value2 value3
    在这里插入图片描述
     
    # 元素是否在集合中
    sismember set_name value
    在这里插入图片描述
     
    # 集合中随机取n个取值
    srandmember set_name value
    在这里插入图片描述
    # 获取所有元素
    smembers set_name
    在这里插入图片描述
     
    # 获取 集合1 - 集合2 的剩余元素
    sdiff set1 set2
    在这里插入图片描述
    # 合并集合
    sunion set1 set2
    在这里插入图片描述
    # 求集合交集
    sinter set1 set2
    在这里插入图片描述

     
     

    有序集合

    # 创建有序集合
    zadd orderd_set_name oder_key1 value1 oder_key2 value2 oder_key3 value3 oder_key4 value4 oder_key5 value5
     
    含义:order_key 是对集合排序时的依据,越小越靠前
    在这里插入图片描述
    # 获取值
    zrange orderd_set_name start_index end_index
     
    # 获取某值的位置索引
    zrank orderd_set_name value
    在这里插入图片描述

     
     
     
     

    开启远程访问

    1、开放端口 6379

    # firewall-cmd --zone=public --add-port=6379/tcp --permanent
    # firewall-cmd --reload

     

    2、修改 redis.conf 中的 bind 127.0.0.1 为 0.0.0.0 或者注释掉该行

    # vim redis.conf
     
    在这里插入图片描述

     
     
     
     
     
     
     
     

    python调用


     

    基础

    安装 redis 库

    pip install -i https://pypi.douban.com/simple redis

     

    读取数据

    import redis
    
    client = redis.Redis(host="192.168.1.79", port="6379")
    
    res = client.get("name").decode("utf-8")
    print(res)
    
    res = client.hgetall("emp")
    print(res)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

  • 相关阅读:
    3. Error Handle和获取硬件信息
    一文读懂 HTTP/2 特性
    初阶数据结构学习记录——열셋 排序(2)
    湖南省物联网挑战赛教学平台使用说明文档
    【HarmonyOS】鸿蒙系统中应用权限等级介绍、定义、申请授权讲解
    Minecraft 1.16.5模组开发(五十一) 方块实体 (Tile Entity)
    圣庭医疗联合创始人谷红仓:高通量基因测序在药物研发和靶向治疗中的应用
    Linux下安装oracle11.2.0.4
    【数字化】分享-广东省企业首席数据官建设指南
    RS-485接口协议详解
  • 原文地址:https://blog.csdn.net/alun550/article/details/120767581