redis简单介绍

redis简介

全称:Remote Dictionary Server(远程字典服务器)。
类型:基于内存的键值型 NoSQL 数据库。
诞生年份:2009年。

Redis 的特点

  1. 键值(Key-Value)型:
    数据结构:支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(SortedSets)等,功能丰富。

  2. 单线程:
    Redis 使用单线程架构,每个命令具有原子性,即每个命令的执行是独立且不被打断的。

  3. 低延迟,速度快:
    基于内存存储,利用 IO 多路复用技术,编码效率高,具有极低的延迟和高性能。

  4. 支持数据持久化:
    提供 RDB 快照和AOF 日志两种持久化方式,以保证数据的持久性和恢复能力。

  5. 支持主从集群、分片集群:
    支持多种集群架构,可以实现数据的主从复制,提高可用性和扩展性。

  6. 支持多语言客户端:
    提供丰富的客户端支持,几乎涵盖了所有主流编程语言,如 Python、Java、C++、Node.js 等。

redis安装

方法一:通过包管理器安装

1. 在 Ubuntu/Debian 上安装

sudo apt update
sudo apt install redis-server

安装完成后,可以使用以下命令启动 Redis 服务:

sudo systemctl start redis-server

检查 Redis 是否启动成功:

redis-cli ping

如果返回 PONG,说明安装成功。

2. 在 CentOS/RHEL 上安装

sudo yum install epel-release
sudo yum install redis

安装完成后,启动 Redis 服务:

sudo systemctl start redis

检查 Redis 是否启动成功:

redis-cli ping

方法二:从源代码编译安装

如果需要最新版本或自定义构建,可以从源代码编译安装:
1. 下载并解压 Redis 源代码

wget http://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6

2. 编译并安装

make
sudo make install

注意: 在编译过程中,如果 make 命令失败,可以尝试运行 ‘make distclean’ 然后重新执行 make。

3. 启动 Redis 服务

src/redis-server

或者使用提供的配置文件启动:

src/redis-server redis.conf

4. 测试 Redis

src/redis-cli

在 Redis CLI 中输入:

ping

如果返回 PONG,则说明安装成功。

方法三:使用 Docker 安装

Docker 是一种快速简便的方式来运行 Redis,无需直接在宿主机上安装任何软件包。
1. 拉取 Redis 镜像

docker pull redis

2. 运行 Redis 容器

docker run --name my-redis -d redis

3. 连接到 Redis
你可以通过以下命令连接到 Redis CLI:

docker exec -it my-redis redis-cli

在 CLI 中输入 ping 来测试连接:

ping

返回 PONG 表示安装成功。

redis配置文件

Redis 的配置文件路径通常在以下位置:
默认路径:/etc/redis/redis.conf
自定义路径:可以在启动 Redis 时指定配置文件路径,例如 redis-server /path/to/redis.conf

配置项名称默认值说明
bind127.0.0.1Redis 监听的 IP 地址,默认只允许本地访问。可配置为 0.0.0.0 以允许外部访问。
port6379Redis 服务器监听的端口。
timeout0客户端空闲多长时间(秒)后断开连接,0 表示不超时。
tcp-keepalive300TCP 保活时间,单位为秒。
daemonizeno是否以后台守护进程方式运行 Redis,yes 为后台运行,no 为前台运行。
pidfile/var/run/redis_6379.pidRedis 进程的 PID 文件路径。
loglevelnotice日志级别,选项有 debug、verbose、notice、warning。
logfile“”日志文件路径,默认输出到标准输出。
databases16Redis 实例支持的数据库数量,默认 16 个数据库。
save900 1;300 10;60 10000RDB 快照保存规则,在指定秒数内发生指定次数的更改后进行保存。
stop-writes-on-bgsave-erroryesRDB 持久化出错时是否停止写操作,yes 为停止,no 为继续。
rdbcompressionyes是否压缩 RDB 文件,yes 为压缩,no 为不压缩。
rdbchecksumyes是否启用 RDB 文件的校验和,yes 为启用,no 为禁用。
dbfilenamedump.rdbRDB 文件名。
dir/var/lib/redisRDB 和 AOF 文件存放路径。
requirepass“”Redis 访问密码。
rename-command“”重命名或禁用命令,例如 rename-command FLUSHALL “” 禁用 FLUSHALL。
maxmemory0Redis 使用的最大内存,0 表示不限制。
maxmemory-policynoeviction内存达到上限后的处理策略,选项有 noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random、volatile-ttl。
slaveof“”配置从服务器连接的主服务器的 IP 和端口,例如 slaveof 127.0.0.1 6379。
masterauth“”从服务器连接主服务器时的认证密码。
cluster-enabledno是否启用 Redis 集群模式,yes 为启用,no 为禁用。
cluster-config-filenodes.conf集群节点配置文件名。
cluster-node-timeout15000集群节点超时时间,单位为毫秒。
lua-time-limit5000Lua 脚本的执行时间限制,单位为毫秒。

redis数据类型

Redis 主要支持以下几种数据类型:
string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。
hash(哈希):一个键值对集合,可以存储多个字段。
list(列表):一个简单的列表,可以存储一系列的字符串元素。
set(集合):一个无序集合,可以存储不重复的字符串元素。
zset(sorted set:有序集合): 类似于集合,但是每个元素都有一个分数(score)与之关联。
位图(Bitmaps):基于字符串类型,可以对每个位进行操作。
超日志(HyperLogLogs):用于基数统计,可以估算集合中的唯一元素数量。
地理空间(Geospatial):用于存储地理位置信息。
发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的消息。
流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。
模块(Modules):Redis 支持动态加载模块,可以扩展 Redis 的功能。

redis通用命令

1、 连接redis服务

连接本地的 redis 服务。

$ redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING

PONG

在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。

在远程服务上执行命令

$ redis-cli -h host -p port -a password

实例
以下实例演示了如何连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上。

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG

2、查看命令说明及用法 help @generic
在这里插入图片描述

3、其他常用命令

命令语法说明
SETSET [key] [value]设置指定键的值。如果键已经存在,值将被覆盖。
GETGET [key]获取指定键的值。如果键不存在,返回 nil。
DELDEL [key]删除指定的键值对,可以一次删除多个键。
EXISTSEXISTS [key]检查指定键是否存在,存在返回 1,不存在返回 0。
EXPIREEXPIRE [key] [seconds]为指定的键设置过期时间(秒)。
TTLTTL [key]获取指定键的剩余过期时间,单位为秒。如果键没有设置过期时间或不存在,返回 -1。
KEYSKEYS [pattern]查找匹配指定模式的所有键。模式可以包含通配符 *(匹配任意字符)、?(匹配单个字符)等。
INCRINCR [key]将指定键的值加 1。如果键不存在,首先将键的值初始化为 0。
DECRDECR [key]将指定键的值减 1。如果键不存在,首先将键的值初始化为 0。
HSETHSET [key] [field] [value]在哈希表中设置指定字段的值。如果字段不存在,将创建该字段。
HGETHGET [key] [field]获取哈希表中指定字段的值。
LPUSHLPUSH [key] [value]将一个值插入列表的头部。如果列表不存在,将创建一个新的列表。
RPUSHRPUSH [key] [value]将一个值插入列表的尾部。如果列表不存在,将创建一个新的列表。
LPOPLPOP [key]移除并返回列表的第一个元素。
RPOPRPOP [key]移除并返回列表的最后一个元素。
SADDSADD [key] [member]向集合添加一个成员。如果成员已经存在,将被忽略。
SMEMBERSSMEMBERS [key]返回集合中的所有成员。
ZADDZADD [key] [score] [member]向有序集合中添加一个成员及其分数。如果成员已经存在,分数将被更新。
ZRANGEZRANGE [key] [start] [stop]返回有序集合中指定范围内的成员,按分数升序排列。
FLUSHDBFLUSHDB清空当前数据库中的所有键值对。
INFOINFO返回 Redis 服务器的各种信息和统计数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值