初識redis
Redis 是一種基于鍵值對(key-value) 的 NoSQL 的數據庫,它與很多鍵值數據庫不同, Redis 中的值可以是 string(字符串) 、hash(哈希)、list(鏈表)、set(集合)、bitmap(位圖)、Zset(有序集合)、GEO(地理位置信息定位) 等多種Value 。 因此 Redis 可以滿足很多的應用場景,并且 Redis 還會將所有數據存放在 內存 中,大大加速了數據讀寫的速度。并且 Redis 會將所有內存中數據利用 快照 和 日志 的形式存放在硬盤上面,保證內存中的數據不會因為意外丟失。
redis特性
-
速度快
Redis執行命令的速度非常快,那為什么 Redis 執行命令的速度這么快呢?大概分為四點:
1.1 數據存儲在內存中,沒有磁盤級 I / O
1.2 **高效的數據結構,通過動態編碼和緊湊存儲優化內存和計算 **
1.3 單線程加上 I / O 多路復用,,避免了多線程上下文的切換以及多線程鎖的競爭,并且通過非阻塞 I / O 多路復用,使用 epoll / kqueue 技術監聽多個客戶端連接,通過事件驅動模型處理請求,單線程就可管理多個鏈接,減少了資源消耗
1.4 智能內存管理,通過分配器和淘汰策略平衡性能與資源 -
基于鍵值對的結構化數據結構處理器
-
豐富的功能
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
中)
/usr/bin/redis-benchmark
,其用于對 Redis 做性能基準測試的工具/usr/bin/redis-check-aof
,用于修復 AOF 文件所用的工具/usr/bin/redis-check-rdb
,用于修復 RDB 文件所用的工具/usr/bin/redis-cli
,用于 Redis 的客戶端程序/usr/bin/redis-sentinel
, Redis 的哨兵程序/usr/bin/redis-server
,其是 Redis 的服務器程序,/usr/libexec/redis-shutdown
,停止 Redis 服務的腳本
redis 配置文件
/etc/redis-sentinel.config
是Redis Sentinel的高可用服務器配置文件,用于監控主從節點并在主節點故障時自動故障轉移。
/etx/redis.config
是redis的配置文件
redis持久化文件存儲目錄
/var/lib//redis/
是存儲 Redis 持久化生產的 AOF 和 RDB 文件的目錄。
redis日志文件目錄
/var/log/redis
會保存 Redis 運行產生的日志文件。
redis命令行客戶端
我們可以通過如下兩種方式來連接 redis 服務器.
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”
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 地址和 端口號 )