1. 程式人生 > >Redis 2.Redis入門介紹

Redis 2.Redis入門介紹

Redis

@Author:hanguixian
@Email:[email protected]

二 Redis入門介紹

1 入門概述

1.1 是什麼

  • Redis:REmote DIctionary Server(遠端字典伺服器)
  • 是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高效能的(key/value)分散式記憶體資料庫,基於記憶體執行並支援持久化的NoSQL資料庫,是當前最熱門的NoSql資料庫之一,也被人們稱為資料結構伺服器
  • Redis 與其他 key - value 快取產品有以下三個特點
    • Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用
    • Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存
    • Redis支援資料的備份,即master-slave模式的資料備份

1.2 能幹嘛

  • 記憶體儲存和持久化:redis支援非同步將記憶體中的資料寫到硬碟上,同時不影響繼續服務
  • 取最新N個數據的操作,如:可以將最新的10條評論的ID放在Redis的List集合裡面
  • 模擬類似於HttpSession這種需要設定過期時間的功能
  • 釋出、訂閱訊息系統
  • 定時器、計數器

1.3 官網

1.4 內容

  • 資料型別、基本操作和配置
  • 持久化和複製,RDB/AOF
  • 事務的控制
  • 複製

2 Redis的安裝

2.1 windows版安裝

  • 下載地址:https://github.com/dmajkic/redis/downloads
  • 下載到的Redis支援32bit和64bit。根據自己實際情況選擇,將64bit的內容cp到自定義碟符安裝目錄取名redis。 如 C:\reids
  • 開啟一個cmd視窗 使用cd命令切換目錄到 C:\redis 執行 redis-server.exe redis.conf 。
  • 如果想方便的話,可以把redis的路徑加到系統的環境變數裡,這樣就省得再輸路徑了,後面的那個redis.conf可以省略,如果省略,會啟用預設的。輸入之後,會顯示如下介面:
  • 這時候另啟一個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。
  • 切換到redis目錄下執行 redis-cli.exe -h 127.0.0.1 -p 6379 。
  • 測試
    • 設定鍵值對 set myKey abc
    • 取出鍵值對 get myKey

2.2 Linux版安裝

由於企業裡面做Redis開發,99%都是Linux版的運用和安裝,幾乎不會涉及到Windows版

2.2.1 安裝
  • 下載獲得redis-x.x.x.tar.gz後將它放入我們的Linux目錄/opt
  • /opt目錄下,解壓命令:tar -zxvf redis-x.x.x.tar.gz
  • 解壓完成後出現資料夾:redis-x.x.x
  • 進入目錄:cd redis-x.x.x
  • 在redis-x.x.x目錄下執行make命令(需要gcc:yum install gcc-c++)
  • 如果make完成後繼續執行make install
#安裝
# https://redis.io/download
#下載,解壓縮和編譯Redis:
wget http://download.redis.io/releases/redis-5.0.2.tar.gz
tar xzf redis-5.0.2.tar.gz
cd redis-5.0.2
make
make install(可選)
#現在編譯的二進位制檔案在src 目錄中可用 。執行Redis:
src/redis-server
#您可以使用內建客戶端與Redis進行互動:
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
2.2.2 檢視預設安裝目錄:usr/local/bin
[[email protected] ~]# cd /usr/local/bin/
[[email protected] bin]# ll
total 32636
-rwxr-xr-x 1 root root 4365264 Nov 26 21:52 redis-benchmark
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-check-aof
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-check-rdb
-rwxr-xr-x 1 root root 4782296 Nov 26 21:52 redis-cli
lrwxrwxrwx 1 root root      12 Nov 26 21:52 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-server
  • redis-benchmark:效能測試工具,可以在自己本子執行,看看自己本子效能如何
  • redis-check-aof:修復有問題的AOF檔案,rdb和aof後面講
  • redis-check-dump(redis-check-rdb)(有點小問題):修復有問題的dump.rdb檔案
  • redis-cli:客戶端,操作入口
  • redis-sentinel:redis叢集使用
  • redis-server:Redis伺服器啟動命令
2.2.3 啟動
  • 修改redis.conf檔案將裡面的daemonize no 改成 yes,讓服務在後臺啟動
  • 將預設的redis.conf拷貝到自己定義好的一個路徑下,比如/myconf
  • /usr/local/bin目錄下執行redis-server,執行拷貝出存放了自定義conf檔案目錄下的redis.conf檔案
redis-server /hanguixian/myredis/redis.conf 
  • 單例項關閉:redis-cli shutdown
  • 多例項關閉,指定埠關閉:redis-cli -p 6379 shutdown
[[email protected] bin]# redis-server /hanguixian/myredis/redis.conf 
14788:C 27 Nov 2018 15:59:21.466 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14788:C 27 Nov 2018 15:59:21.466 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=14788, just started
14788:C 27 Nov 2018 15:59:21.466 # Configuration loaded
[[email protected] bin]# redis-cli -p 6379
127.0.0.1:6379> 
[[email protected] bin]# ps -ef|grep redis
root     12151     1  0 Nov25 ?        00:02:37 ./redis-server 127.0.0.1:6379
root     14797 14738  0 16:00 pts/0    00:00:00 grep --color=auto redis
[[email protected] bin]# redis-cli 
127.0.0.1:6379> SHUTDOWN
not connected> exit
[[email protected] bin]# redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[[email protected] bin]# ps -ef|grep redis
root     14819 14738  0 16:02 pts/0    00:00:00 grep --color=auto redis
[[email protected] bin]# redis-server /hanguixian/myredis/redis.conf 
14820:C 27 Nov 2018 16:02:44.066 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14820:C 27 Nov 2018 16:02:44.066 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=14820, just started
14820:C 27 Nov 2018 16:02:44.066 # Configuration loaded
[[email protected] bin]# ps -ef|grep redis
root     14821     1  0 16:02 ?        00:00:00 redis-server 127.0.0.1:6379
root     14826 14738  0 16:02 pts/0    00:00:00 grep --color=auto redis
[[email protected] bin]# redis-cli shutdown
[[email protected] bin]# ps -ef|grep redis
root     14829 14738  0 16:03 pts/0    00:00:00 grep --color=auto redis

2.3 Redis啟動後雜項基礎知識

2.3.1 單程序
  • 單程序模型來處理客戶端的請求。對讀寫等事件的響應是通過對epoll函式的包裝來做到的。Redis的實際處理速度完全依靠主程序的執行效率
  • epoll是Linux核心為處理大批量檔案描述符而作了改進的epoll,是Linux下多路複用IO介面select/poll的增強版本,
    它能顯著提高程式在大量併發連線中只有少量活躍的情況下的系統CPU利用率。
2.3.2 基本瞭解
  • 預設16個數據庫,類似陣列下表從零開始,初始預設使用零號庫
  • select命令切換資料庫
  • dbsize檢視當前資料庫的key的數量
  • flushdb:清空當前庫
  • Flushall;通殺全部庫
  • 統一密碼管理,16個庫都是同樣密碼,要麼都OK要麼一個也連線不上
    • 設定資料庫的數量,預設資料庫為0,可以使用SELECT <dbid>命令在連線上指定資料庫iddatabases 16
  • Redis索引都是從零開始
  • 為什麼預設埠是6379
    • 6379在是手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字。MERZ長期以來被antirez及其朋友當作愚蠢的代名詞。