Redis初识
目录
第1章 Redis初识
Redis 是什么
- 开源
- 基于键值的存储服务系统
- 多种数据结构
- strings
- hash
- linked list
- sets
- sorted sets
- 高性能、功能丰富
Redis 的特性
- 速度快
- 持久化
- 多种数据结构
- 支持多种编程语言
- 功能丰富
- 简单
- 主从复制
- 高可用、分布式
1. 速度快
- 10w OPS
- 数据存储在内存中
- 使用 C 语言编写
- 单线程模型
寄存器、缓存器、内存以及磁盘访问速度、容量、价格对比图
内存、SSD 盘、机械盘性能对比
2. 持久化
Redis 将所有数据保持在内存中,对数据的更新将异步地保存到磁盘上
3. 支持多种数据结构
- Strings
- Hash
- Linked Lists
- Sets
- Sorted Sets
- Strings 衍生的数据结构
- BitMaps : 位图
- HyperLogLog :超小内存唯一值计数
- Sets 衍生的数据结构
- GEO : 地理信息定位
4. 支持多种编程语言
- java
- php
- python
- ruby
- lua
- node.js
5. 功能丰富
- 发布订阅
- Lua 脚本
- 事务
- Pipeline
6. 简单
- Redis 3.0 版本只有 23000 行代码
- 不依赖外部库(like libevent)
- 单线程模型
7. 主从复制
8. 高可用、分布式
Redis 的典型使用场景
- 缓存系统
- 计数器
- 消息队列系统
- 排行榜
- 社交网络
- 实时系统
Redis 的安装
Redis 安装
1)下载 redis 二进制安装包
wget https://download.redis.io/releases/redis-xxx.tar.gz
2)解压
tar -xzf redis-xxx.tar.gz
3)建立软链接
为了方便管理和升级,建立软链接
ln -s /path/redis-xxx /usr/local/redis-xxx
4)编译和安装
切换到 redis 安装目录,编译并安装
cd /usr/local/redis-xxx
make && make install
5)创建工作目录
mkdir /data/redis/redis6379/data
6)在 Redis 目录下创建配置文件并配置相应的参数
在单机多实例下,以端口号来区分不同实例,因此将配置文件带上端口号后缀
cd /data/redis/redis6379
touch redis6379.conf
配置参数
daemonize yes -- 以守护进程的方式启动
pidfile /var/run/redis6379.pid -- 进程号存储位置,在单机多实例下要用端口号来区分
port 6379 -- 对外端口号
dir "/data/redis/redis6379/data" -- 工作目录
logfile "redis-6379.log" -- 日志文件名
用配置文件启动 Redis
redis-server /data/redis/redis6379/redis6379.conf
可执行文件说明
redis 可执行文件保存在 src 目录内
#find /usr/local/redis/src/ -perm -u+x,-g+x,-o+x | grep redis-
/usr/local/redis/src/redis-benchmark
/usr/local/redis/src/redis-server
/usr/local/redis/src/redis-trib.rb
/usr/local/redis/src/redis-cli
/usr/local/redis/src/redis-sentinel
/usr/local/redis/src/redis-check-rdb
/usr/local/redis/src/redis-check-aof
可执行文件 | 说明 |
---|---|
redis-server | Redis 服务器 |
redis-cli | Redis 命令行客户端 |
redis-benchmark | Redis 性能测试工具 |
redis-check-aof | AOF 文件修复工具 |
redis-check-dump | RDB 文件检查工具 |
redis-sentinel | Sentinel 服务器 |
redis-trib.rb | Redis-Cluster 管理工具 |
三种启动方法
配置文件启动(推荐使用)
redis-server /path/config_file
最简启动
redis-server
动态参数启动
redis-server --port 6380
三种启动方式比较
- 生产环境建议使用配置文件来启动
- 单机多实例配置文件可以用不同端口号区分开
验证是否启动成功
方式1
ps -ef | grep redis
方式2
netstat -antpl | grep redis
方式3
redis-cli -h 127.0.0.1 -p 6379 -a password_of_redis ping
简单的客户端连接
#redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set foo "hello world"
OK
127.0.0.1:6379> get foo
"hello world"
Redis 客户端返回值
1)状态回复
127.0.0.1:6379> ping
PONG
- 错误回复
字符串型的键使用 hget 方法来获取值
127.0.0.1:6379> hget foo field
(error) WRONGTYPE Operation against a key holding the wrong kind of value
3)整数回复
127.0.0.1:6379> incr number
(integer) 1
4)字符串回复
127.0.0.1:6379> get foo
"hello world"
5)多行字符串回复
127.0.0.1:6379> mget foo number
1) "hello world"
2) "1"
Redis 常用配置
- daemonize : 是否是守护进程(no | yes)
- port : Redis 对外端口号
- logfile : Redis 系统日志
- dir : Redis 工作目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现