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

相关推荐
无关86885 小时前
Redis Bitmaps 用户签到系统设计方案
数据库·redis·缓存
江华森5 小时前
FastAPI 极速开发指南 — 从零到生产级 API 实战
数据库·fastapi
小小工匠5 小时前
Redis - 如何使用 Redis 实现分布式锁
redis·性能优化·集群·并发
老纪6 小时前
Redis分布式锁进第九零篇
数据库·redis·分布式
haven-8526 小时前
MySQL事务ACID、隔离级别、MVCC、幻读解决
数据库·mysql
小高学习java7 小时前
事务的边界问题,如何判断数据回滚时机。
java·数据库·后端
迷枫7127 小时前
【无标题】
数据库
TDengine (老段)8 小时前
TDengine 扫描算子 — TableScan、TagScan 与下推优化
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
放下华子我只抽RuiKe58 小时前
FastAPI 全栈后端(三):数据库与 ORM
前端·数据库·react.js·oracle·性能优化·前端框架·fastapi
x***r1518 小时前
linux安装 redis-8.6.0.tar.gz 详细步骤(源码编译、配置、启动)
redis