Redis

MJX2024/04/07其他redis 缓存

简介

Redis(Remote Dictionary Server 远程字典服务) 是一个开源、支持网络、基于内存、可选持久性的键值对存储数据库,是 NoSQL 数据库。

官方原版: https://redis.ioopen in new window

中文官网: https://www.redisdocs.com/zh-cnopen in new window

命令参考: https://redis.com.cnopen in new window

入门教程: https://www.runoob.com/redisopen in new window

安装

网上教程或官网。

redis 安装成功以后,window 下的配置文件保存在软件安装目录下。如果是 mac 或者 linux,则默认安装在 /etc/redis/redis.conf

核心配置

绑定ip: 访问白名单,如果需要远程访问,可将此注释,或绑定1个真实ip。

bind 127.0.0.1

端⼝: 默认为6379。

port 6379

是否以守护进程运行:

  • 如果以守护进程运行,则不会在命令阻塞,类似于服务
  • 如果以守护进程运行,则当前终端被阻塞
daemonize yes  # 设置为yes表示守护进程,设置为no表示⾮守护进程,推荐设置为yes

RDB持久化的备份策略:

RDB 备份是默认开启的。

 # save 时间 读写次数
 save 900 1     # 当redis在900内至少有1次读写操作,则触发一次数据库的备份操作
 save 300 10    # 当redis在300内至少有10次读写操作,则触发一次数据库的备份操作
 save 60 10000  # 当redis在60内至少有10000次读写操作,则触发一次数据库的备份操作

RDB持久化的备份文件:

dbfilename dump.rdb

RDB持久化数据库数据文件的所在目录:

dir <目录>

日志文件目录:

loglevel notice
logfile /var/log/redis/redis-server.log

数据库数量:

database 16  # 默认有16个

登录密码:

  • 生产阶段打开,开发阶段一般都是注释掉。
  • redis 在6.0版本以后新增了 ACL 访问控制机制,新增了用户管理,这个版本以后才有账号和密码。
requirepass <密码>  # 登录 redis-cli -p

参考: Redis设置临时密码、永久密码、取消密码open in new window

AOF持久化的开启配置项:

appendonly no  # 默认值是no,关闭状态

AOF持久化的备份文件:

AOF 的备份数据文件与 RDB 的备份数据文件保存在同一个目录下,由 dir 配置项指定。

appendfilename "appendonly.aof"

AOF持久化备份策略:

# appendfsync always
appendfsync everysec    # 工作中最常用。每一秒备份一次
# appendfsync no

RDB 与 AOF参考:

Redis 两种持久化机制RDB和AOF详解: https://zhuanlan.zhihu.com/p/100885432open in new window

启动服务

启动服务: redis-server --service-start

停止服务: redis-server --service-stop

注意

  • 可以直接使用 redis-server 启动,但是关闭了终端后服务会终止。
  • 可以使用 reddis-server <配置文件地址> 加载配置文件。

连接: redis-cli -h <ip> -p <端口>

数据类型

Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:String类型、哈希类型、列表类型、集合类型和顺序集合类型。

字符串(string)

单个数据的最大容量是512M。

key: 值

注意: redis 中的所有数据操作,如果设置的键不存在则为添加,如果设置的键已经存在则修改。

哈希(hash)

用于存储字典,字典的结构为键值对。域、值的类型都为 string,域在 同一个 hash 中是唯一的。

key:{
    域(属性): 值,
    域:值,            
    域:值,
    ...
}

列表(list)

它的子成员类型为 string。

key: [值1,值2, 值3, ...]

无序集合(set)

它的子成员类型为 string 类型,元素唯一不重复,没有修改操作。

key: {值1, 值4, 值3, ...}

有序集合(zset)

它的子成员值的类型为 string 类型,元素唯一不重复,没有修改操作。权重值从小到大排列。

key: {
    值1 权重值1(数字);
    值2 权重值2;
    值3 权重值3;
    值4 权重值4;
}

Python操作redis

使用 reidis 模块实现。

import redis

pool = redis.ConnectionPool(host='127.0.0.1', port=6379, decode_responses=False)
db = redis.Redis(connection_pool=pool)
db.set('name', 'Mjx')
print(db.get('name'))

重要参数:

  • max_connections :最大连接数
  • decode_responses :是否解码
  • socket_connect_timeout :连接超时时间