(一)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

客户端的启动:

$ ./redis-cli
127.0.0.1:6379>

2. 使用

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

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

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

res = r.ping()

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

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

输出数据类型为 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'

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

127.0.0.1:6379> select 0
OK

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

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

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

127.0.0.1:6379> type name
string
127.0.0.1:6379> get name
"zhangwang"

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

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

3. 总结

  1. 本文总结了 Redis 的基本内容,目前只用到了 Redis 的基本功能,后续会根据使用情况补充相关内容。
  2. Redis 命令的其他使用可以参考网站 https://www.runoob.com/redis/redis-commands.html.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值