Redis 知識點總結 ( Redis原生命令 ) ( CSDN -《Redis深入淺出》 -- 學習筆記 )

一、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 數據類型及相關命令

待補充。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章