【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 地址和 端口号

相关推荐
IvorySQL4 小时前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
ltl4 小时前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
灯澜忆梦5 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
C++ 老炮儿的技术栈7 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客7 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
zt1985q9 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL10 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃10 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo809710 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat10 小时前
MySQL回表机制解析与优化策略
数据库·sql