【redis】初识redis

初识redis

Redis 是一种基于键值对(key-value) 的 NoSQL 的数据库,它与很多键值数据库不同, Redis 中的值可以是 string(字符串) 、hash(哈希)、list(链表)、set(集合)、bitmap(位图)、Zset(有序集合)、GEO(地理位置信息定位) 等多种Value 。 因此 Redis 可以满足很多的应用场景,并且 Redis 还会将所有数据存放在 内存 中,大大加速了数据读写的速度。并且 Redis 会将所有内存中数据利用 快照日志 的形式存放在硬盘上面,保证内存中的数据不会因为意外丢失。

redis特性

  1. 速度快

    Redis执行命令的速度非常快,那为什么 Redis 执行命令的速度这么快呢?大概分为四点:

    1.1 数据存储在内存中,没有磁盘级 I / O

    1.2 **高效的数据结构,通过动态编码和紧凑存储优化内存和计算 **

    1.3 单线程加上 I / O 多路复用,,避免了多线程上下文的切换以及多线程锁的竞争,并且通过非阻塞 I / O 多路复用,使用 epoll / kqueue 技术监听多个客户端连接,通过事件驱动模型处理请求,单线程就可管理多个链接,减少了资源消耗

    1.4 智能内存管理,通过分配器和淘汰策略平衡性能与资源

  2. 基于键值对的结构化数据结构处理器

  3. 丰富的功能

    3.1 提供了键过期功能

    3.2 提供了发布订阅功能

    3.3 支持lua脚本,可以利用Lua创造出新的Redis 命令

    3.4 提供了简单的事务功能,在一定程度上保证了事务的特性

    3.5 提供了流水线功能,客户端能够将一批命令一次性传到Redis(类似于Linux中的管道),减少了网络开销

4.简单稳定

5.客户端语言多 ,支持 Redis 的客户端语言非常多,比如:C、C++、JAVA、PHP、Python、Nodejs等。

6.持久化
Redis 提供了两种持久化方式:RDB (快照) 和 AOF (日志),可以使用上面两种方式将内存数据保存在磁盘中。

6.1 RDB 是通过定期生成数据集快照来保存数据的持久化方式。它会在指定的时间间隔内将内存中的数据集快照写入磁盘。具体过程是通过fork一个子进程,将数据集写入临时文件,写入成功后再替换之前的文件。

6.2 AOF 是通过记录所有写操作日志来保存数据的持久化方式。每当Redis执行一个改变数据集的命令时,这个命令就会被追加到AOF文件的末尾。AOF还支持后台重写,以减少文件大小。

7.主从复制
Redis 提供了主从复制功能,提供了多个相同数据的 Redis 副本。

8.高可用和分布式
Redis 提供了高可用的Redis 哨兵,保证了Redis 节点的故障发现和故障自动转移。也提供了Redis 集群,提供了高可用、读写和容量的扩展性。

redis重要文件及作用

这里展示的是通过 ATP包管理器 安装的 redis 下的可执行文件以及脚本的路径,通过 源码 安装的可能有所不同(通常在/usr/local/reids/bin中)

  1. /usr/bin/redis-benchmark ,其用于对 Redis 做性能基准测试的工具
  2. /usr/bin/redis-check-aof,用于修复 AOF 文件所用的工具
  3. /usr/bin/redis-check-rdb,用于修复 RDB 文件所用的工具
  4. /usr/bin/redis-cli,用于 Redis 的客户端程序
  5. /usr/bin/redis-sentinelRedis 的哨兵程序
  6. /usr/bin/redis-server,其是 Redis 的服务器程序,
  7. /usr/libexec/redis-shutdown,停止 Redis 服务的脚本

redis 配置文件

/etc/redis-sentinel.config是Redis Sentinel的高可用服务器配置文件,用于监控主从节点并在主节点故障时自动故障转移。
/etx/redis.config 是redis的配置文件

redis持久化文件存储目录

/var/lib//redis/是存储 Redis 持久化生产的 AOFRDB 文件的目录。

redis日志文件目录

/var/log/redis 会保存 Redis 运行产生的日志文件。

redis命令行客户端

我们可以通过如下两种方式来连接 redis 服务器.

  1. redis-cli -h {host} -p {port}

root@host \~\]# redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379\> ping PONG 127.0.0.1:6379\> set key hello OK 127.0.0.1:6379\> get key "hello"

  1. redis-cli -h {host} -p {port} {command}

root@host \~\]# redis-cli -h 127.0.0.1 -p 6379 ping PONG \[root@host \~\]# redis-cli -h 127.0.0.1 -p 6379 set key hello OK \[root@host \~\]# redis-cli -h 127.0.0.1 -p 6379 get key "hello"

(注意:这里由于我们连接的是本机上的 redis 服务 127.0.0.1,端口号使用的也是默认的端口 6379 ,所以这里其是可以省略 ip 地址和 端口号

相关推荐
veminhe13 分钟前
Node.js 数据库 CRUD 项目示例
数据库·node.js
HX科技20 分钟前
树莓派_利用Ubuntu搭建gitlab
数据库·ubuntu·gitlab
pursue.dreams20 分钟前
Windows 下 MongoDB ZIP 版本安装指南
数据库·windows·mongodb
qiandeqiande1 小时前
数据集成工具推荐,支持数据库、API、消息文件等集成技术,并具备低代码与可视化配置特性
数据库·低代码·系统集成
betazhou1 小时前
基于Windows通过nginx代理访问Oracle数据库
数据库·nginx·oracle·代理
风中飘爻1 小时前
MySQL入门:数据表的创建
数据库·mysql·oracle
今天多喝热水1 小时前
Redis适用场景
数据库·redis
Gauss松鼠会2 小时前
GaussDB Go驱动开发实战:从环境搭建到连接池优化
数据库
小袁拒绝摆烂2 小时前
Redis-高级篇(分布式缓存/持久化)
redis·分布式·缓存
E___V___E2 小时前
黑马点评redis改 part 2
数据库·redis·缓存