1. 程式人生 > >【Redis】一、簡單介紹及操作

【Redis】一、簡單介紹及操作

一、什麼是Redis
Redis 是一個高效能的開源的、C語言寫的Nosql(非關係型資料庫),資料儲存在記憶體中。

Redis 是以key-value形式儲存,和傳統的關係型資料庫不一樣。不一定遵循傳統資料庫的一些基本要求,比如說,不遵循sql標準,事務,表結構等等,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。

Java中資料結構:String,陣列,list,set map…
Redis提供了很多的方法,可以用來存取各種資料結構的資料。

二、Redis的特點

1.資料儲存在記憶體,存取速度快,併發能力強

2.它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、 zset(sorted set --有序集合)和hash(雜湊型別)。

3.redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關係資料庫(如MySQL)起到很好的補充作用。

4.它提供了Java,C/C++,C#,PHP,JavaScript等客戶端,使用很方便。

5.Redis支援叢集(主從同步)。資料可以主伺服器向任意數量從的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。

6.支援持久化,可以將資料儲存在硬碟的檔案中

7.支援訂閱/釋出(subscribe/publish)功能 QQ群

8、資料存放:存放到記憶體中,還能不定期持久化到磁碟。存取速度快,併發能力強,斷電後資料不丟失。

三、Redis的操作

3.1使用redis-cli 客戶端操作redis
redis是key-value型別的Nosql,命令能操作key和Value,而對於key就是String,而Value就有很多型別(String,list,set,hash…).
在這裡插入圖片描述
3.2對value為string型別的常用操作
set key value//將字串值value關聯到key
get key //返回key關聯的字串值
在這裡插入圖片描述
mset //同時設定一個或多個 key-value 對 merge
mget //返回所有(一個或多個)給定 key 的值
在這裡插入圖片描述
incr key //將 key 中儲存的數字值增1(key不存在,則初始化為0,再加1)
decr key //將 key 中儲存的數字值減1(key不存在,則初始化為0,再減1)
incrBy key num//自增多少
decrBy key num
Setex key seconds value //同時設定key的過期時間和值
在這裡插入圖片描述

3.3對KEY常用操作
keys * //獲取所有key列表
del key //刪除key
expire key xx //設定key的過期時間(xx秒後過期)
ttl key //檢視key的過期時間

flushall //清空整個redis伺服器資料,所有的資料庫全部清空
flushdb //清除當前庫,redis中預設有16個數據庫,名稱分別為0,1,2.。。15(可以用select index 命令來切換資料庫)
在這裡插入圖片描述

3.4對list集合的常用操作
list集合可以看成是一個左右排列的佇列(列表)
lpush key value //將一個或多個值 value 插入到列表 key 的表頭(最左邊)
rpush key value //將一個或多個值 value 插入到列表 key 的表尾(最右邊)
在這裡插入圖片描述
lpop key //移除並返回列表 key 的頭(最左邊)元素。
rpop key //移除並返回列表 key 的尾(最右邊)元素。
在這裡插入圖片描述
lrange key start stop //返回列表 key 中指定區間內的元素,查詢所有的stop為-1即可
lrem key count value //根據count值移除列表key中與引數 value 相等的元素count > 0 : 從表頭開始向表尾搜尋,移除與 value 相等的元素,數量為 count count < 0 : 從表尾開始向表頭搜尋,移除與 value 相等的元素,數量為 count 的絕對值。count = 0 : 移除表中所有與 value 相等的值。
在這裡插入圖片描述
lindex key index //返回列表 key 中,下標為 index 的元素
ltrim key start stop //對一個列表進行修剪,保留start和stop範圍內的值
在這裡插入圖片描述

3.5對set集合的常用操作
set集合是一個無序的不含重複值的佇列
sadd key member //將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略
srem key member //移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略
smembers key //返回集合 key 中的所有成員。
在這裡插入圖片描述
3.6對SortedSet(有序集合)的常用操作
在這裡插入圖片描述
3.7對hash型別的常用操作常用操作
hash型別類似於php的陣列 java map
hset key name value//新增一個name=>value鍵值對到key這個hash型別
hget key name //獲取hash型別的name鍵對應的值
hmset key name1 key1 name2 key2 //批量新增name=>value鍵值對到key這個hash型別
hmget key name1 name2//批量獲取hash型別的鍵對應的值
hkeys //返回雜湊表 key 中的所有鍵
hvals //返回雜湊表 key 中的所有值
hgetall //返回雜湊表 key 中,所有的鍵和值

3.8事務(重要)弱事務) (TCC、訊息一致性)
multi //標記一個事務塊的開始。
exec //執行所有事務塊內的命令。
discard //取消事務,放棄執行事務塊內的所有命令。
Redis的事務在執行exec指令時,才批量執行操作,沒有回滾操作