CentOS7 之 Redis3 學習筆記 1 Redis 官網: http://www.redis.io/ 2 Redis 的下載地址: http://download.redis.io/releases/redis-3.0.7.tar.gz 這裡我們下載的是 redis-3.0.7.tar.gz ...
CentOS7 之 Redis3 學習筆記
1 Redis 官網:
http://www.redis.io/
2 Redis 的下載地址:
http://download.redis.io/releases/redis-3.0.7.tar.gz
這裡我們下載的是 redis-3.0.7.tar.gz
3 Redis 的簡介:
Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
這段話來源於 Redis 的官網,這個是不是最有說服力!?^_^
4 我們可以通過 SecureCRT 或 XShell 連接至 CentOS7 伺服器,併進入到 /usr/local/tools/ 目錄中:
cd cd /usr/local/tools/
如果沒有此目錄,則創建,這個目錄主要用於存放我們下載的一些安裝包:
mkdir -p /usr/local/tools/
5 下載 redis-3.0.7.tar.gz 源碼:
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
也可以點擊官網的 http://download.redis.io/releases/redis-3.0.7.tar.gz 地址現在下載到本機,然後通過 SecureFXP 上傳到 /usr/local/tools/ 目錄;
6 將 redis-3.0.7.tar.gz 源碼解壓縮:
tar xzf redis-3.0.7.tar.gz
7 編譯 Redis 源碼:
進入到 Redis 的根目錄 redis-3.0.7 中:
cd redis-3.0.7
執行編譯命令:
make
8 我們來啟動一下 Redist 伺服器吧:
src/redis-server
shell 給我們如下反饋,則表明 redis 服務啟動成功:
1206:C 04 May 05:48:48.344 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1206
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
1206:M 04 May 05:48:48.347 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1206:M 04 May 05:48:48.347 # Server started, Redis version 3.0.7
1206:M 04 May 05:48:48.347 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1206:M 04 May 05:48:48.347 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1206:M 04 May 05:48:48.355 * DB loaded from disk: 0.008 seconds
1206:M 04 May 05:48:48.355 * The server is now ready to accept connections on port 6379
說明:redis 的預設埠號為 6379,我們可以看到當前的 redis 的 PID 為 1206,處於單機運行狀態;src 目錄下的 redis-server 表示 redis 服務端命令;
9 只啟動了 redis 的服務端並沒有什麼具體的意義,那我們開始啟動 redis 的客戶端,來體驗一下 redis 的魅力所在:
src/redis-cli
src 下的 redis-cli 表示 redis 啟動客戶端的命令;
10 由於 redis 是由 C 語言開發,我們看一下 redis 支持的數據類型都有哪些,
String(字元串)
APPEND
BITCOUNT
BITOP
DECR
DECRBY
GET
GETBIT
GETRANGE
GETSET
INCR
INCRBY
INCRBYFLOAT
MGET
MSET
MSETNX
PSETEX
SET
SETBIT
SETEX
SETNX
SETRANGE
STRLEN
Hash(哈希表)
HDEL
HEXISTS
HGET
HGETALL
HINCRBY
HINCRBYFLOAT
HKEYS
HLEN
HMGET
HMSET
HSET
HSETNX
HVALS
HSCAN
List(列表)
BLPOP
BRPOP
BRPOPLPUSH
LINDEX
LINSERT
LLEN
LPOP
LPUSH
LPUSHX
LRANGE
LREM
LSET
LTRIM
RPOP
RPOPLPUSH
RPUSH
RPUSHX
Set(集合)
SADD
SCARD
SDIFF
SDIFFSTORE
SINTER
SINTERSTORE
SISMEMBER
SMEMBERS
SMOVE
SPOP
SRANDMEMBER
SREM
SUNION
SUNIONSTORE
SSCAN
SortedSet(有序集合)
ZADD
ZCARD
ZCOUNT
ZINCRBY
ZRANGE
ZRANGEBYSCORE
ZRANK
ZREM
ZREMRANGEBYRANK
ZREMRANGEBYSCORE
ZREVRANGE
ZREVRANGEBYSCORE
ZREVRANK
ZSCORE
ZUNIONSTORE
ZINTERSTORE
ZSCAN
11 redis 文檔的中文翻譯網站:
http://doc.redisfans.com/
有不明白的或遺忘的可以來這裡查看;
12 redis 的基本數據單位為 SDS(simple dynamic string),其是在 C 語言的 char[] 數組之上封裝的,用於存儲基本的數據;
13 set 與 get 字元串:
我們向 redis 伺服器插入一個字元串類型的數據:
127.0.0.1:6379> set name 'idea'
shell 反饋給我們的結果如下:
OK
我們查看一下剛剛插入到 redis 伺服器的 key 為 name 的 value :
127.0.0.1:6379> get name
shell 反饋給我們的結果如下:
"idea"
14 我們做一個自增序列:
14.1 設置一個 key 為 orderid 序列,給其初始值為 10000:
incrby orderid 10000
14.2 逐次執行遞增操作:
incr orderid
查看 shell 反饋給我們的結果,是不是 redis 在以 1 的步長間隔遞增?
15 我們做一個列表操作:
15.1 向 List 中自左向右加入 5 個整數:
127.0.0.1:6379> lpush nums 10 20 30 40 50
shell 反饋給我們的結果如下:
(integer) 5
15.2 我們從右側取值,執行 5 次下麵的命令,並查看 shell 的反饋:
127.0.0.1:6379> rpop nums
"10"
127.0.0.1:6379>
127.0.0.1:6379> rpop nums
"20"
127.0.0.1:6379> rpop nums
"30"
127.0.0.1:6379> rpop nums
"40"
127.0.0.1:6379> rpop nums
"50"
127.0.0.1:6379> rpop nums
(nil)
127.0.0.1:6379> rpop nums
(nil)
當執行第 6 次的時候,取不到值了,這像不像數據結構中的“堆”?
15.3 我們從左側取值,執行 5 次下麵的命令,並查看 shell 的反饋:
127.0.0.1:6379> lpop nums
"50"
127.0.0.1:6379> lpop nums
"40"
127.0.0.1:6379> lpop nums
"30"
127.0.0.1:6379> lpop nums
"20"
127.0.0.1:6379> lpop nums
"10"
127.0.0.1:6379> lpop nums
(nil)
當執行到第 6 次後,也是取不到值了,樣子還是很像數據結構中的“堆”的嘛!