• (一)Redis: 基于 Key-Value 的存储系统


    1. Redis 介绍与安装

    1.1 Redis 基本介绍

    Redis 是一种基于 Key-Value 的存储系统,可用作数据库、缓存和消息中间件等。仓库地址:https://github.com/redis/redis

    Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine.

    在 Redis 内部,数据以二进制的形式存放,所以 Redis 支持诸多数据结构,如字符串、列表和集合等。

    1.2 Redis 安装(Ubuntu)

    下载地址: https://github.com/redis/redis/releases,下载完成后本地解压即可。二进制启动文件均在安装目录下的 src 目录,redis-server 用于服务端的启动、redis-cli 用于客户端。服务端的启动:

    $ ./redis-server
    572504:C 31 Jul 2022 08:53:47.438 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    572504:C 31 Jul 2022 08:53:47.438 # Redis version=6.2.7, bits=64, commit=00000000, modified=0, pid=572504, just started
    572504:C 31 Jul 2022 08:53:47.438 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
    572504:M 31 Jul 2022 08:53:47.440 * Increased maximum number of open files to 10032 (it was originally set to 1024).
    572504:M 31 Jul 2022 08:53:47.440 * monotonic clock: POSIX clock_gettime
    572504:M 31 Jul 2022 08:53:47.441 # A key '__redis__compare_helper' was added to Lua globals which is not on the globals allow list nor listed on the deny list.
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 6.2.7 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                  
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 572504
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           https://redis.io       
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    572504:M 31 Jul 2022 08:53:47.441 # Server initialized
    572504:M 31 Jul 2022 08:53:47.441 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    572504:M 31 Jul 2022 08:53:47.446 * Loading RDB produced by version 6.2.7
    572504:M 31 Jul 2022 08:53:47.446 * RDB age 143485 seconds
    572504:M 31 Jul 2022 08:53:47.446 * RDB memory usage when created 0.78 Mb
    572504:M 31 Jul 2022 08:53:47.446 # Done loading RDB, keys loaded: 7, keys expired: 0.
    572504:M 31 Jul 2022 08:53:47.446 * DB loaded from disk: 0.005 seconds
    572504:M 31 Jul 2022 08:53:47.446 * Ready to accept connections
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    客户端的启动:

    $ ./redis-cli
    127.0.0.1:6379>
    
    • 1
    • 2

    2. 使用

    启动 Redis 的服务端后,我们可以在代码端对 Redis 进行操作。从客户端的启动界面可知,我们在操作 Redis 时需指定 IP 地址和端口号,同时指定操作的数据库对象:

    import redis
    r = redis.StrictRedis.from_url(url='redis://127.0.0.1:6379/0')
    
    • 1
    • 2

    建立连接后,可使用 ping 查看建立情况。如果成功建立则返回 PONG,否则返回错误提示信息:

    res = r.ping()
    
    • 1

    字符串是 Redis 常操作的数据类型,get 和 set 是用于操作字符串的方法。

    r.set(name='name', value='zhang')
    print(r.get(name='name'))	# b'zhang'
    
    • 1
    • 2

    输出数据类型为 bytes 的二进制形式。同时,方法 append 用于在字符串末尾添加内容,如果对应 name 不存在则新建并初始化:

    r.append(key='name', value='wang')
    print(r.get(name='name'))	# b'zhangwang'
    r.append(key='age', value=20)
    print(r.get(name='age'))	# b'20'
    
    • 1
    • 2
    • 3
    • 4

    在代码端添加了相关数据后,我们也可在 server-cli 端查看操作结果。首先使用 select 命令切换数据库,前面我们使用的数据库名称为 0。

    127.0.0.1:6379> select 0
    OK
    
    • 1
    • 2

    然后,使用 keys 命令查看所有的 key 值:

    127.0.0.1:6379> keys *
    1) "name"
    2) "age"
    
    • 1
    • 2
    • 3

    结果展现出我们刚才添加的两个字段。此时,可以使用 type 查看对应字段的类型、取对应值等。

    127.0.0.1:6379> type name
    string
    127.0.0.1:6379> get name
    "zhangwang"
    
    • 1
    • 2
    • 3
    • 4

    Redis 默认字段的存储是持久化的,可以通过 expire 方法设置字段的有效时间,单位为秒。

    r.expire(name='age', time=5)	# 设置字段 age 五秒后过期
    time.sleep(5)
    print(r.get(name='age'))		# None
    
    • 1
    • 2
    • 3

    3. 总结

    1. 本文总结了 Redis 的基本内容,目前只用到了 Redis 的基本功能,后续会根据使用情况补充相关内容。
    2. Redis 命令的其他使用可以参考网站 https://www.runoob.com/redis/redis-commands.html.
  • 相关阅读:
    pytorch训练错误记录
    数据看板是什么?
    iNeuOS工业互联网操作系统,增加搜索应用、多数据源绑定、视图背景设置颜色、多级别文件夹、组合及拆分图元
    佛山市政携手企企通,打造高效协同的云端极速供应链
    SSL及GMVPN握手协议详解
    前端面试题整理
    2.Spring的优缺点是什么?
    winform
    ISP 处理流程
    Roguelike 游戏中的计算哲学
  • 原文地址:https://blog.csdn.net/Skies_/article/details/125990751