一、Redis簡介
1. Redis 的發展史
Redis [ Remote Directory Server ] : 遠程服務器字典
2. 下載、安裝、啓動、停止 Redis
- 安裝教程 可參照 https://redis.io/download
1》下載安裝
wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下載
tar xzf redis-5.0.8.tar.gz 解壓
cd redis-5.0.8 切換目錄
make 編譯
make install 安裝
2》可執行的程序在bin下
redis-server: Redis服務器
redis-cli: 命令行客戶端
redis-benchmark: Redis的性能測試工具
redis-check-aof: AOF文件修復工具
redis-check-dump: RDB文件檢測工具
3》redis.conf 是Redis的配置文件
daemonize yes 修改配置文件配置項,以守護進程的方式來使用
4》啓動和停止Redis
直接啓動
redis-server
redis-server/ect/redis.conf
停止Redis
shutdown 也可以結束Redis的進程實現停止
3. Redis 的命令返回值
1》狀態回覆:
ping
SET test ' this is a test'
2》錯誤回覆(錯誤回覆以 error 開始):
(error)ERR unknown command'TESTERROR'
3》整數回覆(以 interger 數值):
(integer)2
4》字符串回覆(nil 代表空的結果):
GET test
(nil)
5》多行字符串回覆:
KEYS * 得到當前數據庫中的存在的鍵名
4. Redis 配置選項相關內容
1》動態設置/獲取配置選項的值
獲取:
CONFIG GET name
1)"port"
2)"6379"
設置:
CONFIG SET name value
2》Redis配置文件redis.conf選項相關
--連接選項--
port 6379 默認端口
bind 127.0.0.1 默認綁定的主機地址
timeout 0 當客戶端閒置多久之後關閉連接,0代表沒有啓動這個選項
loglevel notice 日誌的記錄級別
#debug:很詳細的信息,適合開發和測試
#verbose:包含很多不太有用的信息
#notice:比較適合生產環境
#warning:警告信息
logfile stdout 日誌的記錄方式,默認爲標準輸出
databases 16 默認數據庫的數量16個,默認的數據庫編號從0開始
--快照--
save <seconds> <changes> 多少秒有多少次改變將其同步到磁盤中數據文件裏
save 900 1
save 300 10
save 60 10000
rdbcompression yes 存儲本地數據庫時是否啓用壓縮,默認yes
dbfilename dump.rdb 指定本地數據庫文件名,默認爲dump.rdb
dir./ 指定本地數據庫的存放目錄,默認是當前目錄
5. Redis String 數據類型及相關命令
1》String字符串類型,一個鍵最多存儲 512MB
2》SET: 設置 key 對應的值爲 value
語法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds:設置鍵的key的過期時間 SET key value EX seconds--SETEX
PX milliseconds:以毫秒的形式設置過期時間 SET key value PX milliseconds--PSETEX
NX:只有鍵不存在的時候纔可以設置成功 SET key value NX--SETNX
XX:只有key已經存在的時候纔可以設置
注意:如果key存在,同名會產生覆蓋
SET test16'this is a test16' EX 100
SET test17 ' this is a test17' px 20000
SET test18'this is a test18' NX
SET test18 'this is a test18888' xx
SET test19'this is a test19'EX 100 NX
SET test20 ' this is a test20' EX 100 PX 300000 NX
SET testStr1'this is a test'
3》GET: 根據 key 找到對應的值
語法:GET key
GET testStr1
注意:如果key不存在,返回nil,如果key不是字符串,會報錯
4》GETRANGE: 返回字符串中一部分
語法:GETRANGE key start end
GETRANGE testStr2 0 4
GETRANGE testStr2 0-3
GETRANGE testStr2 -4-2
GETRANGE testStr2 0 1000
5》GETSET: 設置指定key的值,並且返回舊的值
語法:GETSET key value
SET testStr3 'king'
GET testStr3
GETSET testStr3 'queen'
注意:當key不存在返回nil,如果key不是字符串,會報錯
6》MSET: 一次設置多個鍵值對
語法:MSET key value [key value...]
MSET testStr5'king'teststr6'maizi'teststr7'queen'
7》MGET: 一次得到多個鍵值
語法:MGET key key
MGET teststr5 teststr6 teststr7
MGET testStr5 teststr6 teststr7 teststr8
7》MGET:一次得到多個鍵值
語法:MGET key key
MGET testStr5 testStr6 teststr7
MGET testStr5 teststr6 teststr7 teststr8
8》STRLEN:獲取key的字符串長度
語法:STRLEN key
注意:對於不存在key獲取其長度返回的0
STRLEN testStr5
9》SETRANGE:相當於字符串替換的效果
語法:SETRANGE key offset value
注意:如果設置的key原來的字符串長度要比偏移量小,就會以零字節(\x00)來填充
SET testStr9 ' hello king'
SETRANGE testStr9 6'queen'
對不存在的key 使用 SETRANGE
EXISTS testStr10
SETRANGE testStr10 5'king'
10》SETNX:只有key不存在才能設置成功
語法:SETNX key value
EXISTS testStr11
SETNX testStr11 'maizi'
GET testStr11
SETNX testStr11
11》SETNX:只有key不存在才能設置成功
語法:SETNX key value
EXISTS testStr11
SETNX teststr11'maizi'
GET testStr11
SETNX testStr11 'maiziedu'
GET testStr11
12》SETEX:設置key並且設置其過期時間
語法:SETEX key seconds value
SETEX expireStr 60 'testExpire'
注意:SETEX是原子性操作,相當於執行了SET key value,又對這個key設置了過期時間
EXPIRE key seconds
SET expireStr1'test1'
EXPIRE expireStr1 10
SETEX test12 1000'a'
GET test12
13》MSETNX:一次設置多個key-value對,只有所有的key都不存在的時候纔會成功
語法:MSETNX key value [key value]
MSETNX test13'a'test14'b'test15'c'
MSETNX test15'aa'test16'bb'test17'cc'
13》PSETEX:以毫秒爲單位設置key的生存週期
語法:PSETEX key milliseconds value
PSETEX test16 2000'hello world'
PTTL
14》INCR:對key中存儲的數字+1
語法:INCR key
SET counter 1
one312
INCR counter
注意:key如果不存在,則會先初始化爲,在進行INCR操作如果key存儲的不是數字,會報錯
INCR counter1
INCR test20
15》INCRBY:將key中存儲的數字加上指定增量
語法:INCR BY INCREMENT
SET counter2 10
INCRBY counter2 5
INCRBY counter2 1.2
16》INCRBYFLOAT:給key中存儲的數字加上指定的浮點數
語法:INCRBYFLOAT key increment
SET counter3 1
INCRBYFLOAT counter3 1.2
17》DECR:將key中存儲的數字減1
語法:DECR key
DECR counter3
18》DECRBY:將key中存儲的數值減去指定的值
語法:DECRBY key decrement
DECRBY counter2 3
19》APPEND:通過APPEND將值追加到字符串的末尾
語法:如果key不存在,則相當於執行的SET操作
APPEND testStr11 'edu'
APPEND noExistsStr 'this is a test'
5. Redis Hash 數據類型及相關命令
1》Hash類型在 redis.conf 相關配置項:
hash-max-ziplist-entries 512 512字節
hash-max-ziplist-value64 字段數目
2》HSET:將哈希表key中域field設置成指定的value
語法:HSET key field value
HSET userInfol username'king'
HSET userInfo1 password'123456'
HSET userInfo1 email'[email protected]'
HGET userInfo1 username
HSET userInfo1 username 'queen'
如果哈希表key中field不存在,相當於新建field,設置成功返回1
如果哈希表key中field存在,相當於重新賦值,成功返回
3》HGET:返回哈希表key中給定field的值
語法:HGET key field.
HGET userInfo1 username
注意:如果key中field不存在,返回的是nil
4》HSETNX:將hash表中的field設置成指定的值,只要field不存在的時候纔可以成功;如果field存在,操作無效
語法:HSETNX key field value
HSETNX testHash1 test'a'
5》HMSET:通過將多個field-value設置到hash表key中
語法:HMSET key field value field value...
HMSET userInfo2 username 'king' password '123' kickname ' smart king' email ' 382771946@qq. com'HGET userInfo2 username
HMSET userInfo2 username 'queen' role 'admin'
6》HMGET:一次獲得hash表key中多個field的值
語法:HMGET key field field
注意:如果hash表key中field不存在,會返回nil
7》HGETALL:返回hash表key中所有的field和value
語法:HGETALL key
HGETALL userInfo2
8》HKEYS:返回hash中key的所有的field
語法:HKEYS key
HKEYS userInfo2
9》HVALS:返回hash中key中field所有的對應的值
語法:HVALS key
HVALS userInfo2
10》HEXISTS:檢測hash中key的field是否存在
語法:HEXISTS key field
HEXISTS userInfo2 username
HEXISTS userInfo2 notExists
11》HLEN:返回hash表key中field的數量
語法:HLEN key
HLEN userInfo2
12》HINCRBY:給hash中key的field做增量操作
語法:HINCRBY key field increment
HSET userInfo3 age 12
HINCRBY userInfo3 age 10
HSET userInfo3 username 'king'
HINCRBY userInfo3 username 10
13》HINCRBYFLOAT:給hash中key的field做增量浮點操作
語法:HINCRBYFLOAT key field increment
HSET userInfo3 salary'123.111'
HINCRBYFLOAT userInfo3 salary 12.888
14》HDEL刪除HASH中key的指定域,可以刪除一個也可以刪除多個
語法:HDEL key field field
HGETALL userInfo2
HDEL userInfo2 username password email
6. keys相關命令
1》KEYS:返回所有符合給定模式的key
語法:KEYS pattern
*:匹配任意個字符
?:匹配一個任意字符
[]: 匹配[]之間的一個字符,[b-e],a[b-e] ab ac ad ae
\x:匹配特殊字符\? \*
MEST one 1 two 2 three 3 four 4 five 5 six 6 seven 7
KEYS *
KEYS *o*
KEYS c[n-z]*
2》EXISIS:檢查執行key是否存在
語法:EXISTS key
EXISTS one
3》TYPE:返回key所存儲的類型
語法:TYPE key
不存在的key 返回 none
string
hash
set
zset
list
TYPE testStr1
TYPE userInfo2
4》EXPIRE:設置key的過期時間
語法:EXPIRE key seconds
SET cache_page 'https://phpfamily.org'
EXPIRE cache_page 100
注意:如果key已經存在過期時間,在通過EXPIRE設置的時候會覆蓋之前過期時間
5》EXPIREAT:需要指定在指定時間截過期
語法:EXPIREAT key timestamp
SET cache_pagel'http://maiziedu.com'
EXPIREAT cache_page1 1431868810
6》PEXPIRE:以毫秒的形式指定過期時間
語法:PEXIRE key milliseconds
SET cache_page2'http://maiziedu.com'
PEXPIRE cache_page2 50000
7》PEXPIREAT:指定時間戳,單位爲毫秒
語法:PEXPIREAT key timestamp
SET cache_page3'http://phpfamily.org'PEXPIREAT cache_page3 1431968810000000
8》TTL:以秒爲單位返回key剩餘時間
語法:TTLkey
注意:如果沒有key沒有設置過期時間,返回-1如果key不存在返回-2
返回過期時間
SET cache_page4'http://www.baidu.com'TTL cache_page4
TTL cache_page5
EXPIRE cache_page4 100
TTL cache_page4
9》PTTL:以毫秒爲單位返回key的剩餘時間
語法:PTTL key
7. List 數據類型及相關命令
待補充。。。
8. Set 數據類型及相關命令
待補充。。。
9. ZSet 數據類型及相關命令
待補充。。。