Redis數據庫(一)--安裝配置,基礎知識,基礎命令

一、Redis

(一)安裝及配置

redis免安裝,直接解壓即可,然後將redis路徑放入path環境變量
在這裏插入圖片描述

配置服務

redis-server --service-install redis.windows.conf --loglevel verbose --maxheap 200m

在這裏插入圖片描述

啓動服務

在這裏插入圖片描述

(二)Redis基礎知識

客戶端和服務器命令

默認端口號:6379

服務器命令

redis-server redis.windows.conf

客戶端命令

redis-cli

一個redis.windows.conf配置文件,就是一個redis服務器。需要啓動多個服務器時,只須修改配置文件的名稱,再使用redis-server命令即可。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

redis和memcache相比的獨特之處

  1. redis可以用來存儲(storge),有持久化的功能(是可以存儲到硬盤上的);而memcache用來做緩存(cache)
  2. redis存儲的數據有結構;對於memcache來說,存儲的數據只有一種類型–字符串,而redis則可以存儲字符串,鏈表,哈希結構,集合,有序集合

Redis目錄下的重要文件的意義

  • redis-benchmark:性能測試工具
  • redis-check-aof:日誌文件檢測工(比如斷電造成日誌損壞,可以檢測並修復)
  • redis-check-dump:快照文件檢測工具,效果類上
  • redis-cli:客戶端
  • redis-server:服務端
  • redis.windows.conf:配置文件

(三)基礎命令

  • keys *:返回所有key
  • keys list*:返回名以list開頭的所有key
  • exists list1:判斷名爲list1的key是否存在,存在返回1,不存在返回0
  • del list1:刪除一個鍵list1
  • expire list1 10:設置鍵名爲list1的過期時間爲10秒後
  • ttl list1:查看鍵名爲list1的過期時間,若爲-1,表示以過期或永不過期
  • move age 1:將鍵名爲age的轉移到1數據庫中
  • select 1:表示進入1數據庫,默認在0中,一共有16個,從0到15
  • persist age:移除age的過期時間
  • flushdb:刪除所有的數據,清除當前所在庫的所有數據
  • flushall:清空所有數據

1.字符串類型

存取命令
mset mget
setnx msetnx
incr decr
incrby decrby
setrange getrange
set get

set方法:設置key對應的值爲string類型的value,如果該key已經存在,則覆蓋。所以在redis中key唯一。

127.0.0.1:6379> set name lijie 

get:根據key獲取value值

127.0.0.1:6379> get name 

setnx:設置一個不存的字符串,返回0表示設置失敗,已存在。返回1 表示設置新值成功,nx是not exit的意思。

127.0.0.1:6379> setnx name zs
(integer) 0
127.0.0.1:6379> setnx age 20
(integer) 1

setex:設置字符串,同時設置有效期。

127.0.0.1:6379> setex color 10 red
OK
立即查詢
127.0.0.1:6379> get color
"red"
10秒後查詢
127.0.0.1:6379> get color
(nil)

setrange:替換字符串。

setrange 替換什麼 從哪裏開始(0) 替換成什麼

127.0.0.1:6379> set email [email protected]
OK
127.0.0.1:6379> get email
"[email protected]"
127.0.0.1:6379> setrange email 6 163.com
(integer) 14
127.0.0.1:6379> get email
"[email protected]"

mset:一次設置多個key-value,返回OK表示全部設置成功,返回0表示全部失敗。如果存在則替換。

127.0.0.1:6379> mset name1 zs name2 ls
OK
127.0.0.1:6379> get name1
"zs"
127.0.0.1:6379> get name2
"ls"

msetnx:一次設置多個不存在的key-value,返回1表示全部設置成功,返回0表示全部失敗。

127.0.0.1:6379> msetnx name3 kk name4 mm name2 LL
(integer) 0
127.0.0.1:6379> get name3
(nil)
127.0.0.1:6379> get name4
(nil)

getset:獲取原值,並設置新值

127.0.0.1:6379> getset name4 UU
(nil)
127.0.0.1:6379> get name4
"UU"
127.0.0.1:6379> getset name4 RR
"UU"

getrange:獲取key對應value的子字符串

127.0.0.1:6379> get email
"[email protected]"
127.0.0.1:6379> getrange email 0 4
"jalja"

mget:一次獲取多個key對應的value值,不存在返回nil

127.0.0.1:6379> mget name1 name2 name3 name4 name5
1) "zs"
2) "ls"
3) (nil)
4) "RR"
5) (nil)

incr:對key對應的value做加1操作,並返回新值

127.0.0.1:6379> get age
"20"
127.0.0.1:6379> incr age
(integer) 21

incrby:與incr類似,加指定值,key不存在的時候會設置key,並認爲該key原來的value=0

127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incrby age 9
(integer) 30
127.0.0.1:6379> incrby age -5
(integer) 25
127.0.0.1:6379> incrby height 10
(integer) 10

decr:對key對應的value做減1操作

127.0.0.1:6379> get height
"10"
127.0.0.1:6379> decr height
(integer) 9
127.0.0.1:6379> decr height
(integer) 8

decrby:對key對應的value減去指定的值

127.0.0.1:6379> get height
"8"
127.0.0.1:6379> decrby height 3
(integer) 5
127.0.0.1:6379> decrby height -3
(integer) 8

append:對key對應的vlaue字符串追加,返回新字符串的長度

127.0.0.1:6379> get name1
"zs"
127.0.0.1:6379> append name1 ML
(integer) 4
127.0.0.1:6379> get name1
"zsML"

strlen:獲取key對應value的長度

127.0.0.1:6379> get name1
"zsML"
127.0.0.1:6379> strlen name1
(integer) 4

del:刪除選定key,可一下指定多個

127.0.0.1:6379> del name1 name2
(integer) 2

2.hash類型

Redis hash 是一個string類型的filed和value的映射表。Hash特別適合存儲對象。相較於對象的每個字段存成單個string類型。將一個對象存儲在hash類型中會佔用更少的內存,並且可以更方便存取整個對象。

hset:設置hash filed 爲指定值,如果key不存在,則先創建;key存在則替換

127.0.0.1:6379> hset user:001 name zs
(integer) 1
#設置一個user:001 的用戶的name爲zs(可以將user:001看做一個表)

hget:獲取指定field字段的值

127.0.0.1:6379> hget user:001 name
"zs"

hsetnx:設置hash filed 爲指定值,如果key不存在,則先創建。如果存在則返回0表示設置失敗

127.0.0.1:6379> hsetnx user:001 name ML
(integer) 0
127.0.0.1:6379> hsetnx user:001 age 1
(integer) 1

hmset:同時設置hash的多個file

127.0.0.1:6379> hmset user:002 name MM age 20
OK
127.0.0.1:6379> hget user:002 name
"MM"
127.0.0.1:6379> hget user:002 age
"20"

hmget:獲取全部指定的hash filed,必須指定獲取的key的名稱

127.0.0.1:6379> hmget user:002 name age
1) "MM"
2) "20"

hincrby:對hash filed加上指定的值

127.0.0.1:6379> hget user:002 age
"20"
127.0.0.1:6379> hincrby user:002 age 5
(integer) 25
127.0.0.1:6379> hincrby user:002 age -5
(integer) 20

hexists:測試指定的filed是否存在,返回1表示存在,返回0表示不存在

127.0.0.1:6379> hexists user:002 name
(integer) 1
127.0.0.1:6379> hexists user:002 age
(integer) 1
127.0.0.1:6379> hexists user:002 height
(integer) 0

hlen:返回指定hash的field的數量

127.0.0.1:6379> hlen user:002
(integer) 2

hdel 刪除指定hash 的filed字段,返回1表示刪除成功0:表示刪除失敗

127.0.0.1:6379> hget  user:002 age
"20"
127.0.0.1:6379> hdel user:002 age
(integer) 1
127.0.0.1:6379> hdel user:002 age
(integer) 0
127.0.0.1:6379> hget user:002 age
(nil)

hkeys:返回hash 的所有filed

127.0.0.1:6379> hkeys user:001
1) "name"
2) "age"
127.0.0.1:6379> hkeys user:002
1) "name"

hvals:返回hash的所有value

127.0.0.1:6379> hvals user:001
1) "zs"
2) "1"
127.0.0.1:6379> hvals user:002
1) "MM"

3.list類型

list是一個鏈表結構,主要功能是push、pop,獲取一個範圍的所有值等等,操作中key理解爲鏈表的名字。Redis的list類型其實就是一個每個子元素都是string類型的雙向鏈表。我們可以通過push、pop操作鏈表的頭部或者鏈表尾部添加元素,這樣list既可以作爲棧,又可以作爲隊列。

lpush:在key對應list的頭部添加字符串元素,返回list中元素的個數

127.0.0.1:6379> lpush list1 "hello"
(integer) 1
127.0.0.1:6379> lpush list1 "word"
(integer) 2

lrange:獲取list中的元素

127.0.0.1:6379> lrange list1 0 -1(0:第一個,-1:最後一個)
1) "word"
2) "hello"

rpush:在key對應的list尾部添加元素

127.0.0.1:6379> rpush list2 10
(integer) 1
127.0.0.1:6379> rpush list2 11
(integer) 2
127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "11"

linsert:在key對應list的特定位置前或後添加字符串

127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "11"
127.0.0.1:6379> linsert list2 before 11 10.5
(integer) 3
127.0.0.1:6379> linsert list2 after 11 11.5
127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "10.5"
3) "11"
4)"11.5"

lset:更改list中指定下標的元素,返回ok表示設置成功

127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "10.5"
3) "11"
127.0.0.1:6379> lset list2 1 10.00
OK
127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "10.00"
3) "11"

lrem:從key對應list中刪除n個和value相同的元素(n<0 從尾部刪除,n=0 全部刪除,n>0從頭部刪除。)

127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "one"
127.0.0.1:6379> lrem list 1 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"

ltrim:保留list中指定範圍的數據,其他的

127.0.0.1:6379> lrange list2 0 -1
1) "10"
2) "10.00"
3) "11"
4) "12"
127.0.0.1:6379> ltrim list2 1 2
OK
127.0.0.1:6379> lrange list2 0 -1
1) "10.00"
2) "11"

lpop:從list的頭部刪除元素,並返回該元素

127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> lpop list
"two"
127.0.0.1:6379> lrange list 0 -1
1) "one"

rpop:從list尾部刪除元素,並返回該元素

rpoplpush:從第一個list的尾部刪除元素,並添加到第二個list的頭部

127.0.0.1:6379> lrange list 0 -1
1) "one"
127.0.0.1:6379> lrange list1 0 -1
1) "word"
2) "hello"
127.0.0.1:6379> rpoplpush list1 list
"hello"
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
127.0.0.1:6379> lrange list1 0 -1
1) "word"

lindex 返回名稱爲key的list中index位置的元素<===>list[index]

127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
127.0.0.1:6379> lindex list 1
"one"

*llen:返回指定key對應list的長度<====> len(list)*

127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
127.0.0.1:6379> llen list
(integer) 2

4.set類型

Set是一個string類型的無序集合,不允許重複。Set是通過hash table實現的。添加、刪除、查找的複雜度都是0/1。對集合我們可以取並集、交集、差集。

sadd:向key對應的set集合中添加元素,返回1表示添加成功,返回0表示失敗

127.0.0.1:6379> sadd myset1 one
(integer) 1
127.0.0.1:6379> sadd myset1 two
(integer) 1

smembers:查看set集合中的元素

127.0.0.1:6379> smembers myset1
1) "two"
2) "one"

srem:刪除key對應set集合中的元素,返回1表示刪除成功,0表示失敗

127.0.0.1:6379> srem myset1 two
(integer) 1

spop:隨機刪除set中的一個元素並返回該元素

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
3) "four"
127.0.0.1:6379> spop myset1
"four"
127.0.0.1:6379> smembers myset1
1) "three"
2) "one"

sdiff:返回給定set集合的差集 (以在前的set集合爲標準)

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sdiff myset1 myset2
1) "three"
127.0.0.1:6379> sdiff myset2 myset1
1) "two"

sdiffstore:返回所有給定set集合的差集,並將差集添加到另外一個集合中

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sdiffstore myset3 myset1 myset2
(integer) 1
127.0.0.1:6379> smembers myset3
1) "three"

sinter:返回所有給定集合的交集

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sinter myset1 myset2
1) "one"

sinterstore:返回所有給定集合key的交集,並將結果存爲另一個key

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sinterstore myset4 myset1  myset2
(integer) 1 

sunion 返回所有給定集合的並集

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sunion myset1 myset2
1) "three"
2) "two"
3) "one"

sunionstore 返回所有給定集合的並集,並將結果存入另一個集合

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> sunionstore myset5  myset1 myset2
(integer) 3

smove:從第一個集合中移除元素並將該元素添加到另一個集合中。

127.0.0.1:6379> smembers myset1
1) "three"
2) "one"
127.0.0.1:6379> smembers myset5
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> smove myset5 myset1 two
(integer) 1
127.0.0.1:6379> smembers myset5
1) "three"
2) "one"
127.0.0.1:6379> smembers myset1
1) "three"
2) "two"
3) "one"

**scard:返回set集合中元素的個數 llen(list) strlen (str) hlen(hash) **

127.0.0.1:6379> smembers myset1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> scard myset1
(integer) 3

sismember:測試member元素是否是名稱爲key的set集合 返回1:表示是 0:不是

127.0.0.1:6379> smembers myset1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sismember myset1 tree
(integer) 0
127.0.0.1:6379> sismember myset1 three
(integer) 1

srandmember:隨機返回set集合中的一個元素,但不刪除該元素

127.0.0.1:6379> smembers myset1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379>  srandmember myset1
"one"

5.sorted set類型

sorted set是set的一個升級版,他在set的基礎上增加了一個順序屬性,這一屬性在添加元素的時候可以指定,每次指定後,zset會自動重新按新的值挑戰順序。可以理解爲有兩列的mysql表,一列存value,一列存順序。操作key理解爲zset的名字。

zadd:向有序集合zset中添加元素並指定順序,如果該元素已存在就更新元素順序。

127.0.0.1:6379> zadd myzset1 1 one
(integer) 1
127.0.0.1:6379> zadd myzset1 2 two
(integer) 1

zrange:從zset集合中取元素 [withscores] 輸出元素順序號

127.0.0.1:6379> zadd myzset1 1 one
(integer) 1
127.0.0.1:6379> zadd myzset1 2 two
(integer) 1
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"

zrem:刪除zset集合中指定的元素

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zrem myzset1 two
(integer) 1
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "1"

zincrby:若zset中已經存在元素member、則該元素的score增加incrment否則向該集合中添加該元素,其score的值爲increment

例:改變myset1中one元素的順序值

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "1"
127.0.0.1:6379> zincrby myzset1 2 one
"3"
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"

zrank:返回zset中元素member的排名(score從小到大排序)即下標

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zrank myzset1 four
(integer) 1

zrevrank:返回zset集合中member元素的排名(按照score倒敘)即下標

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zrevrank myzset1 four
(integer) 1
127.0.0.1:6379> zrevrank myzset1 five
(integer) 0

zrevrange:從zset集合中倒敘(score倒敘)獲取元素

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zrevrange myzset1 0 -1 withscores
1) "five"
2) "5"
3) "four"
4) "4"
5) "one"
6) "3"

zrangebyscore:從zset集合中根據score順序獲取元素

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zrangebyscore  myzset1 4 5 withscores
1) "four"
2) "4"
3) "five"
4) "5"

zcount:返回集合中score在給定區間的數量

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zcount myzset1 3 4
(integer) 2

zcard:返回zset集合中所有元素個數

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zcard myzset1
(integer) 3

zremrangebyrank:刪除集合中排名(下標)在給定區間的元素

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zremrangebyrank myzset1 1 2
(integer) 2
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"

zremrangebyscore::刪除集合中順序(score值)在給定區間的元素

127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "one"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zremrangebyscore myzset1 3 4
(integer) 2
127.0.0.1:6379> zrange myzset1 0 -1 withscores
1) "five"
2) "5"

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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