Redis 初次見面

作者:莫那·魯道;

鏈接:https://www.jianshu.com/p/a6baa19f219e


Redis 初次見面


一 Redis 特性

  1. 速度快(基於內存,C 語言,單線程)
  2. 基於 key value 鍵值對的數據結構服務器。全稱 Remote Dictionary Server。包含 String,Hash, List, Set, SotrSet. 同時在字符串的基礎上演變出位圖(BitMaps) 和 HyperLogLog 兩種數據數據結構。3.2 版本中加入 GEO(地理信息位置)
  3. 豐富的功能。例如:鍵過期(緩存),發佈訂閱(消息隊列), Lua 腳本(自己實現 Redis 命令),事務,流水線(Pipeline 減少網絡開銷)
  4. 簡單穩定
  5. 客戶端語言多
  6. 持久化(RDB,AOF)
  7. 主從複製(分佈式的基礎)
  8. 高可用和分佈式(Cluster)

二 使用場景

1. 緩存

合理的使用緩存能夠明顯加快訪問的速度,同時降低數據源的壓力。這也是 Redis 最常用的功能。Redis 提供了鍵值過期時間( EXPIRE key seconds)設置,並且也提供了靈活控制最大內存和內存溢出後的淘汰策略。

2. 排行榜

每個網站都有自己的排行榜,例如按照熱度排名的排行榜,發佈時間的排行榜,答題排行榜等等。Redis 提供了列表(List)和有序集合(sorted set)數據結構,合理的使用這些數據結構可以很方便的構建各種排行榜系統。

3. 計數器

計數器在網站應用中非常重要,例如,點贊數加一,瀏覽數加一,還有常用的限流操作,限制每個用戶每秒訪問系統的次數等等,Redis 支持計數功能(INCR key)而且計數的性能也非常好,計數的同時也可以設置超時時間,這樣就可以實現限流。

4. 社交網絡

贊/踩,粉絲,共同好友/喜好,推送,下拉刷新等是社交網站必備的功能,由於社交網站訪問量通常比較大,而且傳統的數據庫不太適合保存這類數據,Redis 提供的數據結構可以相對比較容易實現這些功能。鏈接:[Redis實戰:如何構建類微博的億級社交平臺 https://blog.csdn.net/younger_z/article/details/51692720]

5. 消息隊列

Redis 提供的發佈訂閱(PUB/SUB) 和阻塞隊列(blpop key1...keyN timeout )的功能,雖然和專業的消息隊列比,還不夠強大,但對於一般的消息隊列功能基本滿足。

三 初次使用

1. 安裝(Linux)

Centos yum install redis

2. 配置

安裝完成之後,會在 /usr/local/bin 目錄目錄下,多出幾個可執行文件,稱之為 redis shell。如下:

Redis 初次見面

3. 啟動 redis 的 3 種方法

3.1 配置文件啟動:將配置寫到配置文件中,例如寫到 /opt/redis/redis.conf 中,執行 redis-server /opt/redis/redis.conf 即可啟動 redis。redis 有 60 多個配置,常用的是:port(端口),logfile(日誌文件),dir(redis 工作目錄,存放持久化文件和日誌文件),daemonize(是否以守護進程的方式啟動 redis)。

3.2 運行啟動:在 redis-server 後面加入參數,格式為:redis-server --configkey1 configvaue1 --configkey2 configvalue2. 例如:redis-server --port 6380 ,即,將端口自定義為 6380.

3.3 默認啟動:直接 redis-server,默認端口 6379.

如果是生產環境的話,通常建議使用配置文件的方式啟動。

4. 使用 redis 客戶端

redis 客戶端可以通過設置 ip 端口,連接 redis 服務器並執行命令。而使用redis-cli 的方式有 2 種。

4.1 交互式方式:通過 redis cli -h [host] -p [port] 的方式連接到 reids 服務。

4.2 命令式方式:通過 redis-cli -h [host] -p [port] [command] 就可以,是一次性的。

注意:如果不指定 host,port ,默認連接 127.0.0.1:6379

5. 關閉 redis 服務

redis 提供了 shutDown 命令來停止 redis 服務,例如停掉127.0.0.1:6379 服務,使用:redis-cli shutdown 即可。

注意點:
  • redis 關閉的過程:斷開和客戶端的連接,持久化文件生成。相對而言比較優雅。
  • 不用使用 kill -9,過於粗暴,不但不會做持久化操作,還會造成緩衝區等資源不會優雅關閉。極端情況下造成 AOF 和複製丟失數據的情況。
  • shutdown 還有一個參數,代表是否在關閉 redis 前,生成持久化文件: redis-cli shutdown nosave|save

四 Redis 版本說明

redis 借鑑了 Linux 對於版本號的命名規則,版本號第二位如果是奇數,則為非穩定版本,如果是偶數,則為穩定版本。當前奇數版本就是下一個穩定版本的開發版本。

重大版本:2.8 提升了 sentinel 的可用性,使其可在生產環境使用;3.0 版本最大的功能:添加了分佈式 Redis Cluster,填補了官方沒有分佈式實現的空白(之前都是用戶自己實現的 sharding)。

五 引用

《Redis 開發與運維》

相關推薦

推薦中...