Redis簡介
- Redis-REmote DIctionary Server
- Redis是一個(gè)使用ANSI C語言編寫的開源數(shù)據(jù)庫
- 高性能的key-value數(shù)據(jù)庫
- 內(nèi)存數(shù)據(jù)庫,支持?jǐn)?shù)據(jù)持久化
- Redis官網(wǎng)https://redis.io/
- 提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端
Redis安裝(Linux)
下載、解壓、編譯Redis
tar xzf redis-5.0.4.tar.gz
cd redis-5.0.4
make
完成后運(yùn)行測試
make test
如果出現(xiàn)You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] error 1,則需安裝tcl
yum install tcl
再次執(zhí)行make test則不會(huì)報(bào)錯(cuò)

安裝成功
Redis啟動(dòng)(Linux)
./src/redis-server &
或者
redis-server ${redis.conf} #加載配置啟動(dòng)
redis-server --port ${port} #指定端口啟動(dòng)

Redis啟動(dòng)
這種方式不會(huì)占用命令行,如果命令后不加空格&則會(huì)占用,如上圖
啟動(dòng)redis-cli
./src/redis-cli
或者
redis-cli -port ${port} #指定端口啟動(dòng)(需要和redis-server的端口一致)
redis-cli -h ${ip} #指定host啟動(dòng)
redis-cli -a ${password} #認(rèn)證啟動(dòng)
#可以組合使用

啟動(dòng)redis-cli
關(guān)閉redis-cli
./src/redis-cli shutdown
或者
redis-cli -port ${port} shutdown #指定端口關(guān)閉(默認(rèn)6379,需要和啟動(dòng)端口一致)
redis-cli -h ${ip} shutdown #指定host關(guān)閉
#可以組合使用

關(guān)閉redis-cli
如果使用Ctrl+C終止了redis-server,則不會(huì)進(jìn)行持久化
Redis配置端口號(hào)和密碼
打開redis.conf
sudo vim redis.conf
搜索輸入/關(guān)鍵字。n:下一個(gè),N:上一個(gè)
修改后保存退出,使用redis-server ${redis.conf} 加載配置啟動(dòng)
...
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379 #端口號(hào)
...
# use a very strong password otherwise it will be very easy to break.
#
requirepass password #密碼
...
Redis基礎(chǔ)命令
- info ---- 查看信息
- ping ---- 測試連接
- quit ---- 退出連接
- save ---- 持久化
- dbsize ---- 查看key數(shù)量
- select ---- 選擇db
- flushdb ---- 清除當(dāng)前db
- flushall ---- 清除所有db
Redis常用數(shù)據(jù)類型
- string(字符串)
- list(鏈表)
- set(無序集合)
- sorted set(有序集合)
- hash(Hash表)
Redis常用鍵命令
- set ---- 設(shè)置鍵值 ---- set testkey testval
- get ---- 獲取值 ---- get testkey
- del ---- 刪除 ---- key del testkey
- exists ---- 判斷key是否存在 ---- exists testkey
- expire ---- 設(shè)置key生存時(shí)間單位s ---- expire testkey 10
- mset ---- 一次設(shè)置多個(gè)鍵值 ---- mset k1 v1 k2 v2 k3 v3
- mget ---- 一次獲取多個(gè)值 ---- mget k1 k2 k3
- setex ---- 在設(shè)置鍵時(shí)設(shè)置生存時(shí)間單位s ---- setex testkey 10 testval
- psetex ---- 在設(shè)置鍵時(shí)設(shè)置生存時(shí)間單位ms ---- setex testkey 1000 testval
- ttl ---- 查看一個(gè)key剩余生存時(shí)間單位s,-1為永久存在-2為不存在 ---- ttl testkey
- type ---- 查看值類型 ---- type testkey
- randomkey ---- 隨機(jī)key的值 ---- randomkey
- rename ---- 重命名key(新的key如果已存在會(huì)覆蓋原有的) ---- rename testkey newkey
- renamenx ---- 重命名key(以nx結(jié)尾的命令會(huì)做驗(yàn)證,以renamenx 為例,如果新的key如果已存在不會(huì)覆蓋原有的鍵,返回0)
- getrange ---- 獲取一段范圍的值 ---- getrange testkey 0 3(返回"test")
- getset ---- 獲取舊的值設(shè)置新的值 ---- getset testkey newtestval(返回"testval")
- strlen ---- 獲取字符串長度 ---- strlen testkey
- append ---- 追加字符串 ---- append testkey appendstr
- incr ---- int類型的值+1 ---- incr testint
- incrby ---- int類型的值+n ---- incr testint 100
- decr ---- int類型的值-1 ---- decr testint
- decrby ---- int類型的值-n ---- decr testint 100
- hset ---- 設(shè)置hash值 ---- hest map name tom
- hexists ---- 查看hash表的指定字段是否存在 ---- hexists testmap name
- hget ---- 查看hash表的指定字段值 ---- hget testmap name
- hgetall ----查看hash表所有鍵值 ---- hgetall testmap
- hkeys ---- 查看hash表所有鍵---- hkeys testmap
- hvals ---- 查看hash表所有值---- hvals testmap
- hlen ---- 查看hash表鍵數(shù)量---- hlen testmap
- hdel ---- 刪除hash表中的key ---- hdel name
- lpush ---- 將一個(gè)或多個(gè)值插入到list頭部 ---- lpush testlist 1 2 3 4 5 6
- llen ---- 獲取list長度 ---- llen testlist
- lrange ---- 返回list中指定區(qū)間內(nèi)的元素 ---- lrange testlist 0 3
- lset ---- 通過索引來設(shè)置元素的值 ---- lset testlist 0 100
- lindex ---- 通過索引獲取列表中的元素,-1為最后一個(gè)元素, -2 為倒數(shù)第2個(gè) ---- lindex testlist 1
- lpop ---- 移除list中第一個(gè)元素 ---- lpop testlist
- rpop ---- 移除list中最后一個(gè)元素 ---- rpop testlist
- sadd ---- 將一個(gè)或多個(gè)成員元素加入到集合中 ---- sadd testset a b c d
- scard ---- 回集合中元素的數(shù)量 ---- scard testset
- smembers ---- 返回集合中的所有的成員 ---- smembers testset
- sdiff ---- 返回給定集合之間的差集 ----sdiff testset1 testset2
- sinter ---- 返回給定所有給定集合的交集 ----sinter testset1 testset2
- sunion ---- 返回給定集合的并集 ----sunion testset1 testset2
- srandmember ----- 返回集合中的n個(gè)隨機(jī)元素 ---- srandmember testset 3
- sismember ---- 判斷成員元素是否是集合的成員 ---- sismember testset a
- srem ---- 移除集合中的一個(gè)或多個(gè)成員元素 ---- srem testset a b
- spop ---- 移除集合中的指定 key 的一個(gè)或多個(gè)隨機(jī)元素,并返回這個(gè)元素 ---- spop testset
- zadd ---- 將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中 ---- zadd testsorted 100 a 200 b 300 c
- zscore ---- 返回有序集中成員的分?jǐn)?shù)值 ---- zscore testsorted a
- zcount ---- 計(jì)算有序集合中指定分?jǐn)?shù)區(qū)間的成員數(shù)量 ---- zcount testsorted 0 300
- zrank ---- 返回有序集中指定成員的排名(從小到大) ---- zrank testsorted a
- zincrby ---- 指定成員的分?jǐn)?shù)加+n ---- zincrby testsorted 1000 a