1.簡介 Redis是完全開源的ANSI C語言編寫、遵守BSD協議,高性能的key-value資料庫。 1.1特點 Redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用。 Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zs ...
1.簡介
Redis是完全開源的ANSI C語言編寫、遵守BSD協議,高性能的key-value資料庫。
1.1特點
- Redis支持數據的持久化,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用。
- Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
- Redis支持數據的備份,即master-slave模式的數據備份。
1.2優勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
- 豐富的數據類型 – Redis支持二進位案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
2.安裝
2.1windows安裝
在 https://github.com/MicrosoftArchive/redis/releases下下載Redis-x64-3.2.100.zip。
將下載的包移動到c盤下,新建redis文件夾,將壓縮包在redis文件夾下解壓。
打開一個 cmd 視窗 使用cd命令切換目錄到 C:\redis 運行 redis-server.exe redis.windows.conf 。
C:\redis> redis-server.exe redis.windows.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 11604
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[11604] 24 Nov 11:04:00.253 # Server started, Redis version 3.2.100
這時候另啟一個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。
切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379 。
設置鍵值對 set myKey abc
取出鍵值對 get myKey
C:\redis>redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> set mykey yaohong
OK
127.0.0.1:6379> get mykey
"yaohong"
127.0.0.1:6379>
3.配置
3.1獲取配置
#CONFIG GET *
3.2便捷配置
#CONFIG SET loglevel "notice"
4.數據類型
Redis支持五種數據類型:string(字元串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
5.命令
5.1基本命令
啟動redis客戶端
C:\redis>redis-cli
127.0.0.1:6379>
檢測redis服務是否啟動
127.0.0.1:6379> PING
PONG
連接遠程
C:\redis>redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
5.2鍵(key)
增:SET keyname redis ---key後面跟key的名稱和key的值
刪:del keyname
改:EXPIRE yhkey 60 ---修改key的過期時間、EXPIRE以秒計算、 PEXPIRE 以毫秒計算
ttl myname -----修改key永不過期
rename key yhkey9
查:keys * 查詢所有key
keys yh* 過濾出包含yh的key
exists keyname 判斷key是否存在
pttl mekey查找key的剩餘時間
5.3Redis-String
#增
127.0.0.1:6379> SET keyname2 "hello myname is yaohong, what is your name?" OK
#查 127.0.0.1:6379> GET keyname2 "hello myname is yaohong, what is your name?"
#截取字元串 127.0.0.1:6379> GETRANGE keyname2 2 14 "llo myname is" 127.0.0.1:6379> keys * 1) "keyname2" 2) "yhkey1" 3) "yhkey9" 4) "yhkey3" 5) "keyname1" 6) "yhyhkey" 7) "mykey"
#同時獲取多個字元串 127.0.0.1:6379> GET yhkey1 yhkey3 (error) ERR wrong number of arguments for 'get' command 127.0.0.1:6379> MGET yhkey1 yhkey3 1) "redis" 2) "redis" 127.0.0.1:6379>
5.4Redis-Hash
增:hmset(同時將多個file-value設置到hash表中)、hget
刪:hdel
查:hget、hgetall、hkey獲取hash表中所有域(file)、
hmget myhash file1 file2 file3(返回哈希表中,一個或多個給定欄位的值)
hvals獲取哈希表中所有值
判:hexists 判斷是否存在
hlen獲取file個數
5.5Redis-List
Redis列表是簡單的字元串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
增:lpush(頭部插入元素)、rpush(尾部插入元素)
刪:lpop(移除列表第一個元素)、rpop(移除列表最後一個元素)、lrem keyname count value(count大於0從頭部開始刪除value元素)
查:llen(獲取列表長度)、lreng key start stop(獲取start到stop的元素)
改:lset、rset
5.6Redis-Set
增:sadd、
sunionstore myset myset1 myset2 命令將給定集合的並集存儲在指定的集合 myset中
刪:spop移除集合中隨機數
srem按值移除集合中元素
查:smembers、scard(獲取成員數)、
sdiff(列出第一個集合擁有,第二個集合沒有的元素)、
sdiffstore(將第一個集合擁有,第二個集合沒有的元素保存到第三個集合中)、
sinter(列出兩個集合的交集)
smembers列出集合所有成員
改:smove myset1 myset2 "key1" 將key1從myset1移到myset2
判:sismember 判斷元素是否是key的成員
5.7Redis-ZSet
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重覆的成員。
增:zadd keyname scoren value
刪:zrem keyname nember 移除有序集合中的一個或多個成員
zremrangebylex key min max 移除有序集合中給定的字典區間的所有成員。
zremrangebyrank key start stop 移除有序集合中給定的排名區間的所有成員
zremrangebyscore key min max 移除有序集合中給定的分數區間的所有成員
查:zcard 獲取集合的成員數
zcount key min max 計算在有序集合中指定區間分數的成員數
zrange key start stop WITHSCORES 通過索引區間返回有序集合成指定區間內的成員
5.8事務
Redis 事務可以一次執行多個命令
開始事務:MULTI
執行事務:EXEC
取消事務:DISCARD 取消事務,放棄執行事務塊內的所有命令
監視事務:WATCH 監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷
取消監視:UNWATCH 取消 WATCH 命令對所有 key 的監視。
5.9腳本
Eval 命令使用 Lua 解釋器執行腳本。
5.10伺服器
Redis 伺服器命令主要是用於管理 redis 服務。
統計參數:INFO
重置 INFO 命令中的某些統計數據:config resetstat
鍵數:dbsize
刪除所有key:flushall
刪除當前資料庫key:flushdb
非同步保存數據到硬碟:save
6.Redis高級
6.1Redis 數據備份與恢復
備份:save
恢復:1:將生成的rdb文件移動到 redis 安裝目錄(執行config get dir)並啟動服務即可
創建 redis 備份文件也可以使用命令 BGSAVE,該命令在後臺執行。
6.2Redis 安全
設置密碼:config set requirepass "itnihao"
auth itnihao
獲取密碼:CONFIG get requirepass
6.3Redis 性能測試
6.4Redis 客戶端連接
查看最大連接數:config get maxclients
設置最大連接數:redis-server --maxclients 100000
6.5Redis 管道技術
Redis 管道技術可以在服務端未響應時,客戶端可以繼續向服務端發送請求,並最終一次性讀取所有服務端的響應。
6.6Redis 分區
分區是分割數據到多個Redis實例的處理過程,因此每個實例只保存key的一個子集。