99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

redis必學(xué)基礎(chǔ)知識

發(fā)布時間:2016-08-05 21:11  回復(fù):0  查看:2496   最后回復(fù):2016-08-05 21:11  

網(wǎng)上有很多的教程,但是大多數(shù)都零零散散入門redis的同學(xué)看起來很困難,所以這里總結(jié)了一些基礎(chǔ)知識。

 

1.redis是什么?

Redis 是完全開源免費的,遵守BSD協(xié)議,是一個高性能的key-value數(shù)據(jù)庫。

對的redis就是一個存鍵值對的數(shù)據(jù)庫,它不僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲?!疚伊?xí)慣于存簡單的key-value(value都是寫成需要數(shù)據(jù)結(jié)構(gòu)的對象)】。

2.redis使用場景

1.取最新N個數(shù)據(jù)的操作

2.排行榜應(yīng)用,TOP N 操作

3.需要精確設(shè)定過期時間的應(yīng)用

4.計數(shù)器應(yīng)用

由于INCR等指令本身就具有原子操作的特性,所以我們完全可以利用redisINCR、INCRBY、DECRDECRBY等指令來實現(xiàn)原子計數(shù)的 效果,假如,在某種場景下有3

客戶端同時讀取了mynum的值(值為2),然后對其同時進(jìn)行了加1的操作,那么,最后mynum的值一定是5。不少網(wǎng)站 都利用redis的這個特性來實現(xiàn)業(yè)務(wù)上的統(tǒng)計計數(shù)需求。

5.Uniq操作,獲取某段時間所有數(shù)據(jù)排重值

6.實時系統(tǒng),反垃圾系統(tǒng)

7.Pub/Sub構(gòu)建實時消息系統(tǒng)

8.構(gòu)建隊列系統(tǒng)

9.緩存

最多的是用做緩存。他的操作所讀是mysql10倍不止。SET操作每秒鐘 110000 ,GET操作每秒鐘 81000 次。

3.redis數(shù)據(jù)結(jié)構(gòu)

上邊已經(jīng)說了redis是一種高級的key:value存儲系統(tǒng),其中value支持五種數(shù)據(jù)類型:

1.字符串(strings
2.字符串列表(lists
3.字符串集合(sets
4.有序字符串集合(sorted sets
5.哈希(hashes

3.1.key

1.key不要太長,盡量不要超過1024字節(jié),這不僅消耗內(nèi)存,而且會降低查找的效率;
2.key也不要太短,太短的話,key的可讀性會降低;
3.在一個項目中,key最好使用統(tǒng)一的命名模式,例如power_loginname

3.2.字符串(strings

strings類型是一個很基礎(chǔ)的數(shù)據(jù)類型,也是任何存儲系統(tǒng)都必備的數(shù)據(jù)類型.

操作如下:

set myredis 'kmonkeywyl'get myredis

注:在遇到非字符串類型比如int,redis會默認(rèn)轉(zhuǎn)為string.

3.3.字符串列表(lists

redis中的lists在底層實現(xiàn)上并不是數(shù)組,而是鏈表.所以插入數(shù)據(jù)快,但定位性能操作較差。

lists的常用操作包括lpush、rpush、lpush,lrange

操作如下:

 

//新建一個list叫做mylist,并在列表頭部插入元素"1"

lpush mylist "1"

//mylist右側(cè)插入元素"2"

rpush mylist "2"

//mylist左側(cè)插入元素"0"

lpush mylist "0"

//列出mylist中從編號0到編號1的元素

lrange mylist 0 1

//列出mylist中從編號0到倒數(shù)第一個元素

lrange mylist 0 -1

 

注:上邊應(yīng)用場景1,2,8都用到lists就會很方便,具體應(yīng)用場景(消息隊列,分頁,博客評論)

3.3.字符串集合(sets

集合對于我們來說應(yīng)該不陌生,就是我們初中學(xué)的那個集合,針對于集合有幾個概念不知道你還熟悉不?取交集、取并集、取差,不熟悉的自己去熟悉去吧。

操作如下:

 

//向集合myset中加入新元素"wyl"

sadd myset "wyl"

(integer) 1

sadd myset "kmonkey"

(integer) 1

//列出集合myset中的所有元素

smembers myset

1) "wyl"

2) "kmonkey"

//判斷元素1是否在集合myset中,返回1表示存在

sismember myset "wyl"

(integer) 1

//判斷元素是否在集合myset中,返回0表示不存在

sismember myset "wangyanling"

(integer) 0

//新建一個新的集合yourset

sadd yourset "1"

(integer) 1

sadd yourset "2"

(integer) 1

smembers yourset

1) "1"

2) "2"

//對兩個集合求并集

sunion myset yourset

1) "1"

2) "wyl"

3) "2"

4) "kmonkey"

3.4.有序字符串集合(sorted sets

和上邊的無須集合唯一的差別是有序的每個元素都有一個序號score,主要是便于排序

操作如下:

 

zadd myzset 1 baidu.com

(integer) 1

//myzset中新增一個元素360.com,賦予它的序號是3

zadd myzset 3 360.com

(integer) 1

//myzset中新增一個元素google.com,賦予它的序號是2

 zadd myzset 2 google.com

(integer) 1

//列出myzset的所有元素,同時列出其序號,可以看出myzset已經(jīng)是有序的了。

zrange myzset 0 -1 with scores

1) "baidu.com"

2) "1"

3) "google.com"

4) "2"

5) "360.com"

6) "3"

//只列出myzset的元素

 zrange myzset 0 -1

1) "baidu.com"

2) "google.com"

3) "360.com"

3.5.哈希(hashes

這就和結(jié)構(gòu)數(shù)據(jù)庫類似了。我是不喜歡在redis中使用hashes的。

操作如下

 

//建立哈希,并賦值

HMSET user:001 username wylpassword 111 age 34

OK

//列出哈希的內(nèi)容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "wyl"

3) "password"

4) "111"

5) "age"

6) "34"

//更改哈希中的某一個值

HSET user:001 password 12345

(integer) 0

//再次列出哈希的內(nèi)容

127.0.0.1:6379> HGETALL user:001

1) "username"

2) "wyl"

3) "password"

4) "12345"

5) "age"

6) "34"

 

 

原文來自:博客園/kmonkey

您還未登錄,請先登錄

熱門帖子

最新帖子

?