Ⅰ redis field 是什麼意思 跟key是什麼關系,比如lpush(key,field,value)應該怎麼設置
先說redisredis是一個類似memcached的key/value存儲系統,它支持存儲的value類型相對較多,包括string(字元串)、list(鏈表)、set(集合)和zset(有序集合)。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件(這點兒個人覺得redis比memcache在數據保存上要安全一些),並且在此基礎上實現了master-slave(主從)同步。redis的存取性能很高,SET操作每秒鍾110000次,GET操作每秒鍾81000次(速度很爽!)。Redis針對不同的存儲類型對象提供了不同的命令。redis目前提供四種數據類型:string,list,set及zset(sortedset)。string是最簡單的類型,你可以理解成與Memcached一模一個的類型,一個key對應一個value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。list是一個鏈表結構,主要功能是push、pop、獲取一個范圍的所有值等等。操作中key理解為鏈表的名字。set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交並差等操作。操作中key理解為集合的名字。zset是set的一個升級版本,他在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset的名字。下面提供redis命令:適合全體類型的命令EXISTSkey判斷一個鍵是否存在;存在返回1;否則返回0;DELkey刪除某個key,或是一系列key;DELkey1key2key3key4TYPEkey返回某個key元素的數據類型(none:不存在,string:字元,list,set,zset,hash)KEYSpattern返回匹配的key列表(KEYSfoo*:查找foo開頭的keys)RANDOMKEY隨機獲得一個已經存在的key,如果當前資料庫為空,則返回空字元串RENAMEoldnamenewname更改key的名字,新鍵如果存在將被覆蓋RENAMENXoldnamenewname更改key的名字,如果名字存在則更改失敗DBSIZE返回當前資料庫的key的總數EXPIRE設置某個key的過期時間(秒),(EXPIREbruce1000:設置bruce這個key1000秒後系統自動刪除)注意:如果在還沒有過期的時候,對值進行了改變,那麼那個值會被清除。TTL查找某個key還有多長時間過期,返回時間秒SELECTindex選擇資料庫MOVEkeydbindex將指定鍵從當前資料庫移到目標資料庫dbindex。成功返回1;否則返回0(源資料庫不存在key或目標資料庫已存在同名key);FLUSHDB清空當前資料庫中的所有鍵FLUSHALL清空所有資料庫中的所有鍵處理字元串的命令SETkeyvalue給一個鍵設置字元串值。SETkeynamedatalengthdata(SETbruce10paitoubing:保存key為burce,字元串長度為10的一個字元串paitoubing到資料庫),data最大不可超過1G。GETkey獲取某個key的value值。如key不存在,則返回字元串「nil」;如key的值不為字元串類型,則返回一個錯誤。GETSETkeyvalue可以理解成獲得的key的值然後SET這個值,更加方便的操作(SETbruce10paitoubing,這個時候需要修改bruce變成1234567890並獲取這個以前的數據paitoubing,GETSETbruce101234567890)MGETkey1key2…keyN一次性返回多個鍵的值SETNXkeyvalueSETNX與SET的區別是SET可以創建與更新key的value,而SETNX是如果key不存在,則創建key與value數據MSETkey1value1key2value2…keyNvalueN在一次原子操作下一次性設置多個鍵和值MSETNXkey1value1key2value2…keyNvalueN在一次原子操作下一次性設置多個鍵和值(目標鍵不存在情況下,如果有一個以上的key已存在,則失敗)INCRkey自增鍵值INCRBYkeyinteger令鍵值自增指定數值DECRkey自減鍵值DECRBYkeyinteger令鍵值自減指定數值處理lists的命令RPUSHkeyvalue從List尾部添加一個元素(如序列不存在,則先創建,如已存在同名Key而非序列,則返回錯誤)LPUSHkeyvalue從List頭部添加一個元素LLENkey返回一個List的長度LRANGEkeystartend從自定的范圍內返回序列的元素(LRANGEtestlist02;返回序列testlist前012元素)LTRIMkeystartend修剪某個范圍之外的數據(LTRIMtestlist02;保留012元素,其餘的刪除)LINDEXkeyindex返回某個位置的序列值(LINDEXtestlist0;返回序列testlist位置為0的元素)LSETkeyindexvalue更新某個位置元素的值LREMkeycountvalue從List的頭部(count正數)或尾部(count負數)刪除一定數量(count)匹配value的元素,返回刪除的元素數量。LPOPkey彈出List的第一個元素RPOPkey彈出List的最後一個元素RPOPLPUSHsrckeydstkey彈出_srckey_中最後一個元素並將其壓入_dstkey_頭部,key不存在或序列為空則返回「nil」處理集合(sets)的命令(有索引無序序列)SADDkeymember增加元素到SETS序列,如果元素(membe)不存在則添加成功1,否則失敗0;(SADDtestlist3/none)SREMkeymember刪除SETS序列的某個元素,如果元素不存在則失敗0,否則成功1(SREMtestlist3/None)SPOPkey從集合中隨機彈出一個成員SMOVEsrckeydstkeymember把一個SETS序列的某個元素移動到另外一個SETS序列(SMOVEtestlisttest3/ntwo;從序列testlist移動元素two到test中,testlist中將不存在two元素)SCARDkey統計某個SETS的序列的元素數量SISMEMBERkeymember獲知指定成員是否存在於集合中SINTERkey1key2…keyN返回key1,key2,…,keyN中的交集SINTERSTOREdstkeykey1key2…keyN將key1,key2,…,keyN中的交集存入dstkeySUNIONkey1key2…keyN返回key1,key2,…,keyN的並集SUNIONSTOREdstkeykey1key2…keyN將key1,key2,…,keyN的並集存入dstkeySDIFFkey1key2…keyN依據key2,…,keyN求key1的差集。官方例子:key1=x,a,b,ckey2=ckey3=a,dSDIFFkey1,key2,key3=>x,bSDIFFSTOREdstkeykey1key2…keyN依據key2,…,keyN求key1的差集並存入dstkeySMEMBERSkey返回某個序列的所有元素SRANDMEMBERkey隨機返回某個序列的元素處理有序集合(sortedsets)的命令(zsets)ZADDkeyscoremember添加指定成員到有序集合中,如果目標存在則更新score(分值,排序用)ZREMkeymember從有序集合刪除指定成員ZINCRBYkeyincrementmember如果成員存在則將其增加_increment_,否則將設置一個score為_increment_的成員ZRANGEkeystartend返回升序排序後的指定范圍的成員ZREVRANGEkeystartend返回降序排序後的指定范圍的成員ZRANGEBYSCOREkeyminmax返回所有符合score>=min和score=min和score形式的數據,通過key進行任何操作。ttserver可以將數據持久化保存,memcached全部是保存在內存中,memcached會自動刪除過期數據,最長不超過30天。memcached在和一些api配合時,能自動進行數據的出入序列化,讀取反序列化。ttserver有主從復制的功能,操作日誌等,這完全是資料庫才有的東西。據說memcached正在對整體架構做調整,到時候支持plugin機制.會把網路,事件處理,內存存儲剝離開來.以後要做基於磁碟的key-value存儲就可以寫一個存儲引擎就成了。memcached的二次開發又步入一個小高潮。
Ⅱ redis常用命令是什麼
1、連接操作相關命令:
type(key):返值類型。
使用的注意事項
1、 Redis和Memcache都是將數據存放在內存中,都是內存資料庫。不過memcache還可用於緩存其他東西,例如圖片、視頻等等。
2、Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,hash等數據結構的存儲。
3、虛擬內存–Redis當物理內存用完時,可以將一些很久沒用到的value 交換到磁碟 。
4、過期策略–memcache在set時就指定,例如set key1 0 0 8,即永不過期。Redis可以通過例如expire 設定,例如expire name 10 。
Ⅲ redis list 怎麼使用
工具/原料
linux伺服器一台
putty軟體一個
方法/步驟
1
在key對應的list的頭部添加字元串元素
命令:lpush #參數0 到-1 是從開始到結束
2
在key對應list的尾部添加字元串元素:
命令:rpush
3
在key對應list的特定位置前 or 後 添加字元串:
命令:linsert
4
設置list中指定的下標元素值:
命令:lset
5
從key對應list中刪除n個和value相同的元素(n<0從尾刪除,n=0全部刪除)
命令:lrem
6
保留指定的key的值范圍內的數據:
命令:ltrim
7
從list的頭部刪除元素、並返回刪除元素:
命令:lpop
8
從list的尾部刪除元素,並返回刪除元素:
命令:rpop
9
從第一個list的尾部移除元素並添加到第二個list的頭部:(尾彈出 頭壓入)
命令:rpoplpush
10
返回名稱為key的list中index位置的元素:
命令:lindex
11
返回key對應list的長度:
命令:llen
END
教你如何使用Redis(共7
Ⅳ 若redis版本不支持redis-cli命令,怎麼連接
[Redis] redis-cli 命令總結
Redis提供了豐富的命令(command)對資料庫和各種數據類型進行操作,這些command可以在Linux終端使用。
在編程時,比如使用Redis 的Java語言包,這些命令都有對應的方法。下面將Redis提供的命令做一總結。
官網命令列表:http://redis.io/commands (英文)
1、連接操作相關的命令
quit:關閉連接(connection)
auth:簡單密碼認證
2、對value操作的命令
exists(key):確認一個key是否存在
del(key):刪除一個key
type(key):返回值的類型
keys(pattern):返回滿足給定pattern的所有key
randomkey:隨機返回key空間的一個key
rename(oldname, newname):將key由oldname重命名為newname,若newname存在則刪除newname表示的key
dbsize:返回當前資料庫中key的數目
expire:設定一個key的活動時間(s)
ttl:獲得一個key的活動時間
select(index):按索引查詢
move(key, dbindex):將當前資料庫中的key轉移到有dbindex索引的資料庫
flushdb:刪除當前選擇資料庫中的所有key
flushall:刪除所有資料庫中的所有key
3、對String操作的命令
set(key, value):給資料庫中名稱為key的string賦予值value
get(key):返回資料庫中名稱為key的string的value
getset(key, value):給名稱為key的string賦予上一次的value
mget(key1, key2,…, key N):返回庫中多個string(它們的名稱為key1,key2…)的value
setnx(key, value):如果不存在名稱為key的string,則向庫中添加string,名稱為key,值為value
setex(key, time, value):向庫中添加string(名稱為key,值為value)同時,設定過期時間time
mset(key1, value1, key2, value2,…key N, value N):同時給多個string賦值,名稱為key i的string賦值value i
msetnx(key1, value1, key2, value2,…key N, value N):如果所有名稱為key i的string都不存在,則向庫中添加string,
名稱key i賦值為value i
incr(key):名稱為key的string增1操作
incrby(key, integer):名稱為key的string增加integer
decr(key):名稱為key的string減1操作
decrby(key, integer):名稱為key的string減少integer
append(key, value):名稱為key的string的值附加value
substr(key, start, end):返回名稱為key的string的value的子串
4、對List操作的命令
rpush(key, value):在名稱為key的list尾添加一個值為value的元素
lpush(key, value):在名稱為key的list頭添加一個值為value的 元素
llen(key):返回名稱為key的list的長度
lrange(key, start, end):返回名稱為key的list中start至end之間的元素(下標從0開始,下同)
ltrim(key, start, end):截取名稱為key的list,保留start至end之間的元素
lindex(key, index):返回名稱為key的list中index位置的元素
lset(key, index, value):給名稱為key的list中index位置的元素賦值為value
lrem(key, count, value):刪除count個名稱為key的list中值為value的元素。
count為0,刪除所有值為value的元素,count>0從頭至尾刪除count個值為value的元素,count<0從尾到頭刪除|count|個值為value的元素。
lpop(key):返回並刪除名稱為key的list中的首元素 rpop(key):返回並刪除名稱為key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
即當timeout為0時,若遇到名稱為key i的list不存在或該list為空,則命令結束。
如果timeout>0,則遇到上述情況時,等待timeout秒,如果問題沒有解決,則對keyi+1開始的list執行pop操作。
brpop(key1, key2,… key N, timeout):rpop的block版本。參考上一命令。
rpoplpush(srckey, dstkey):返回並刪除名稱為srckey的list的尾元素,並將該元素添加到名稱為dstkey的list的頭部
5、對Set操作的命令
sadd(key, member):向名稱為key的set中添加元素member
srem(key, member) :刪除名稱為key的set中的元素member
spop(key) :隨機返回並刪除名稱為key的set中一個元素
smove(srckey, dstkey, member) :將member元素從名稱為srckey的集合移到名稱為dstkey的集合
scard(key) :返回名稱為key的set的基數
sismember(key, member) :測試member是否是名稱為key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, key1, key2,…key N) :求交集並將交集保存到dstkey的集合
sunion(key1, key2,…key N) :求並集
sunionstore(dstkey, key1, key2,…key N) :求並集並將並集保存到dstkey的集合
sdiff(key1, key2,…key N) :求差集
sdiffstore(dstkey, key1, key2,…key N) :求差集並將差集保存到dstkey的集合
smembers(key) :返回名稱為key的set的所有元素
srandmember(key) :隨機返回名稱為key的set的一個元素
6、對zset(sorted set)操作的命令
zadd(key, score, member):向名稱為key的zset中添加元素member,score用於排序。如果該元素已經存在,則根據score更新該元素的順序。
zrem(key, member) :刪除名稱為key的zset中的元素member
zincrby(key, increment, member) :如果在名稱為key的zset中已經存在元素member,則該元素的score增加increment;
否則向集合中添加該元素,其score的值為increment
zrank(key, member) :返回名稱為key的zset(元素已按score從小到大排序)中member元素的rank(即index,從0開始),
若沒有member元素,返回「nil」
zrevrank(key, member) :返回名稱為key的zset(元素已按score從大到小排序)中member元素的rank(即index,從0開始),
若沒有member元素,返回「nil」
zrange(key, start, end):返回名稱為key的zset(元素已按score從小到大排序)中的index從start到end的所有元素
zrevrange(key, start, end):返回名稱為key的zset(元素已按score從大到小排序)中的index從start到end的所有元素
zrangebyscore(key, min, max):返回名稱為key的zset中score >= min且score <= max的所有元素
zcard(key):返回名稱為key的zset的基數 zscore(key, element):返回名稱為key的zset中元素element的
score zremrangebyrank(key, min, max):刪除名稱為key的zset中rank >= min且rank <= max的所有元素
zremrangebyscore(key, min, max) :刪除名稱為key的zset中score >= min且score <= max的所有元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):對N個zset求並集和交集,
並將最後的集合保存在dstkeyN中。對於集合中每一個元素的score,在進行AGGREGATE運算前,都要乘以對於的WEIGHT參數。
如果沒有提供WEIGHT,默認為1。默認的AGGREGATE是SUM,即結果集合中元素的score是所有集合對應元素進行SUM運算的值,而MIN和MAX是指,
結果集合中元素的score是所有集合對應元素中最小值和最大值。
7、對Hash操作的命令
hset(key, field, value):向名稱為key的hash中添加元素field<—>value
hget(key, field):返回名稱為key的hash中field對應的value
hmget(key, field1, …,field N):返回名稱為key的hash中field i對應的value
hmset(key, field1, value1,…,field N, value N):向名稱為key的hash中添加元素field i<—>value i
hincrby(key, field, integer):將名稱為key的hash中field的value增加integer
hexists(key, field):名稱為key的hash中是否存在鍵為field的域
hdel(key, field):刪除名稱為key的hash中鍵為field的域
hlen(key):返回名稱為key的hash中元素個數
hkeys(key):返回名稱為key的hash中所有鍵
hvals(key):返回名稱為key的hash中所有鍵對應的value
hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應的value
8、持久化
save:將數據同步保存到磁碟
bgsave:將數據非同步保存到磁碟
lastsave:返回上次成功將數據保存到磁碟的Unix時戳
shundown:將數據同步保存到磁碟,然後關閉服務
9、遠程服務控制
info:提供伺服器的信息和統計
monitor:實時轉儲收到的請求
slaveof:改變復制策略設置
config:在運行時配置Redis伺服器
Ⅳ redis getset 命令怎麼使用方法
[Redis] redis-cli 命令總結
Redis提供豐富命令(command)資料庫各種數據類型進行操作些commandLinux終端使用
編程比使用Redis Java語言包些命令都應面Redis提供命令做總結
官網命令列表: (英文)
1、連接操作相關命令
quit:關閉連接(connection)
auth:簡單密碼認證
2、value操作命令
exists(key):確認key否存
del(key):刪除key
type(key):返值類型
keys(pattern):返滿足給定pattern所key
randomkey:隨機返key空間key
rename(oldname, newname):key由oldname重命名newname若newname存則刪除newname表示key
dbsize:返前資料庫key數目
expire:設定key間(s)
ttl:獲key間
select(index):按索引查詢
move(key, dbindex):前資料庫key轉移dbindex索引資料庫
flushdb:刪除前選擇資料庫所key
flushall:刪除所資料庫所key
3、String操作命令
set(key, value):給資料庫名稱keystring賦予值value
get(key):返資料庫名稱keystringvalue
getset(key, value):給名稱keystring賦予value
mget(key1, key2,…, key N):返庫string(名稱key1key2…)value
setnx(key, value):存名稱keystring則向庫添加string名稱key值value
setex(key, time, value):向庫添加string(名稱key值value)同設定期間time
mset(key1, value1, key2, value2,…key N, value N):同給string賦值名稱key istring賦值value i
msetnx(key1, value1, key2, value2,…key N, value N):所名稱key istring都存則向庫添加string
名稱key i賦值value i
incr(key):名稱keystring增1操作
incrby(key, integer):名稱keystring增加integer
decr(key):名稱keystring減1操作
decrby(key, integer):名稱keystring減少integer
append(key, value):名稱keystring值附加value
substr(key, start, end):返名稱keystringvalue串
4、List操作命令
rpush(key, value):名稱keylist尾添加值value元素
lpush(key, value):名稱keylist添加值value 元素
llen(key):返名稱keylist度
lrange(key, start, end):返名稱keyliststart至end間元素(標0始同)
ltrim(key, start, end):截取名稱keylist保留start至end間元素
lindex(key, index):返名稱keylistindex位置元素
lset(key, index, value):給名稱keylistindex位置元素賦值value
lrem(key, count, value):刪除count名稱keylist值value元素
count0刪除所值value元素count>0至尾刪除count值value元素count<0尾刪除|count|值value元素
lpop(key):返並刪除名稱keylist首元素 rpop(key):返並刪除名稱keylist尾元素
blpop(key1, key2,… key N, timeout):lpop命令block版本
即timeout0若遇名稱key ilist存或該list空則命令結束
timeout>0則遇述情況等待timeout秒問題沒解決則keyi+1始list執行pop操作
brpop(key1, key2,… key N, timeout):rpopblock版本參考命令
rpoplpush(srckey, dstkey):返並刪除名稱srckeylist尾元素並該元素添加名稱dstkeylist部
5、Set操作命令
sadd(key, member):向名稱keyset添加元素member
srem(key, member) :刪除名稱keyset元素member
spop(key) :隨機返並刪除名稱keyset元素
smove(srckey, dstkey, member) :member元素名稱srckey集合移名稱dstkey集合
scard(key) :返名稱keyset基數
sismember(key, member) :測試member否名稱keyset元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, key1, key2,…key N) :求交集並交集保存dstkey集合
sunion(key1, key2,…key N) :求並集
sunionstore(dstkey, key1, key2,…key N) :求並集並並集保存dstkey集合
sdiff(key1, key2,…key N) :求差集
sdiffstore(dstkey, key1, key2,…key N) :求差集並差集保存dstkey集合
smembers(key) :返名稱keyset所元素
srandmember(key) :隨機返名稱keyset元素
6、zset(sorted set)操作命令
zadd(key, score, member):向名稱keyzset添加元素memberscore用於排序該元素已經存則根據score更新該元素順序
zrem(key, member) :刪除名稱keyzset元素member
zincrby(key, increment, member) :名稱keyzset已經存元素member則該元素score增加increment;
否則向集合添加該元素其score值increment
zrank(key, member) :返名稱keyzset(元素已按score排序)member元素rank(即index0始)
若沒member元素返nil
zrevrank(key, member) :返名稱keyzset(元素已按score排序)member元素rank(即index0始)
若沒member元素返nil
zrange(key, start, end):返名稱keyzset(元素已按score排序)indexstartend所元素
zrevrange(key, start, end):返名稱keyzset(元素已按score排序)indexstartend所元素
zrangebyscore(key, min, max):返名稱keyzsetscore >= min且score <= max所元素
zcard(key):返名稱keyzset基數 zscore(key, element):返名稱keyzset元素element
score zremrangebyrank(key, min, max):刪除名稱keyzsetrank >= min且rank <= max所元素
zremrangebyscore(key, min, max) :刪除名稱keyzsetscore >= min且score <= max所元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):Nzset求並集交集
並集合保存dstkeyN於集合每元素score進行AGGREGATE運算前都要乘於WEIGHT參數
沒提供WEIGHT默認1默認AGGREGATESUM即結集合元素score所集合應元素進行SUM運算值MINMAX指
結集合元素score所集合應元素值值
7、Hash操作命令
hset(key, field, value):向名稱keyhash添加元素fieldvalue
hget(key, field):返名稱keyhashfield應value
hmget(key, field1, …,field N):返名稱keyhashfield i應value
hmset(key, field1, value1,…,field N, value N):向名稱keyhash添加元素field ivalue i
hincrby(key, field, integer):名稱keyhashfieldvalue增加integer
hexists(key, field):名稱keyhash否存鍵field域
hdel(key, field):刪除名稱keyhash鍵field域
hlen(key):返名稱keyhash元素數
hkeys(key):返名稱keyhash所鍵
hvals(key):返名稱keyhash所鍵應value
hgetall(key):返名稱keyhash所鍵(field)及其應value
8、持久化
save:數據同步保存磁碟
bgsave:數據非同步保存磁碟
lastsave:返功數據保存磁碟Unix戳
shundown:數據同步保存磁碟關閉服務
9、遠程服務控制
info:提供伺服器信息統計
monitor:實轉儲收請求
slaveof:改變復制策略設置
config:運行配置Redis伺服器
Ⅵ 如何查詢redis存儲的所有數據
1、打開reidis,選擇第三個資料庫。
Ⅶ redis隊列什麼意思
Redis隊列功能介紹
List
常用命令:
Blpop刪除,並獲得該列表中的第一元素,或阻塞,直到有一個可用
Brpop刪除,並獲得該列表中的最後一個元素,或阻塞,直到有一個可用
Brpoplpush
Lindex獲取一個元素,通過其索引列表
Linsert在列表中的另一個元素之前或之後插入一個元素
Llen獲得隊列(List)的長度
Lpop從隊列的左邊出隊一個元素
Lpush從隊列的左邊入隊一個或多個元素
Lpushx當隊列存在時,從隊到左邊入隊一個元素
Lrange從列表中獲取指定返回的元素
Lrem從列表中刪除元素
Lset設置隊列裡面一個元素的值
Ltrim修剪到指定范圍內的清單
Rpop從隊列的右邊出隊一個元素
Rpoplpush刪除列表中的最後一個元素,將其追加到另一個列表
Rpush從隊列的右邊入隊一個元素
Rpushx從隊列的右邊入隊一個元素,僅隊列存在時有效
應用場景:
Redislist的應用場景非常多,也是Redis最重要的數據結構之一,比如twitter的關注列表,粉絲列表等都可以用Redis的list結構來實現。
Lists就是鏈表,相信略有數據結構知識的人都應該能理解其結構。使用Lists結構,我們可以輕松地實現最新消息排行等功能。
Lists的另一個應用就是消息隊列,
可以利用Lists的PUSH操作,將任務存在Lists中,然後工作線程再用POP操作將任務取出進行執行。Redis還提供了操作Lists中某一段的api,你可以直接查詢,刪除Lists中某一段的元素。
如果需要還可以用redis的Sorted-Sets數據結構來做優先隊列.可以給每條消息加上一個唯一的序號。這里就不詳細介紹了。
實現方式:
Redislist的實現為一個雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內存開銷,Redis內部的很多實現,包括發送緩沖隊列等也都是用的這個數據結構。
示意圖:
1)入隊
Ⅷ redis如何理解呢,在哪些方面有應用呢
您好,這樣的:
毫無疑問,Redis開創了一種新的數據存儲思路,使用Redis,我們不用在面對功能單調的資料庫時,把精力放在如何把大象放進冰箱這樣的問題上,而是利用Redis靈活多變的數據結構和數據操作,為不同的大象構建不同的冰箱。希望你喜歡這個比喻。
Redis比較適合的一些應用場景,簡單列舉在這里,供大家一覽:
1.取最新N個數據的操作
比如典型的取你網站的最新文章,通過下面方式,我們可以將最新的5000條評論的ID放在Redis的List集合中,並將超出集合部分從資料庫獲取
使用LPUSH latest.comments<ID>命令,向list集合中插入數據
插入完成後再用LTRIM latest.comments 0 5000命令使其永遠只保存最近5000個ID
然後我們在客戶端獲取某一頁評論時可以用下面的邏輯(偽代碼)
FUNCTION get_latest_comments(start,num_items):
id_list = redis.lrange("latest.comments",start,start+num_items-1)
IF id_list.length < num_items
id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
END
RETURN id_list
END
如果你還有不同的篩選維度,比如某個分類的最新N條,那麼你可以再建一個按此分類的List,只存ID的話,Redis是非常高效的。
2.排行榜應用,取TOP N操作
這個需求與上面需求的不同之處在於,前面操作以時間為權重,這個是以某個條件為權重,比如按頂的次數排序,這時候就需要我們的sorted set出馬了,將你要排序的值設置成sorted set的score,將具體的數據設置成相應的value,每次只需要執行一條ZADD命令即可。
3.需要精準設定過期時間的應用
比如你可以把上面說到的sorted set的score值設置成過期時間的時間戳,那麼就可以簡單地通過過期時間排序,定時清除過期數據了,不僅是清除Redis中的過期數據,你完全可以把Redis里這個過期時間當成是對資料庫中數據的索引,用Redis來找出哪些數據需要過期刪除,然後再精準地從資料庫中刪除相應的記錄。
4.計數器應用
Redis的命令都是原子性的,你可以輕松地利用INCR,DECR命令來構建計數器系統。
5.Uniq操作,獲取某段時間所有數據排重值
這個使用Redis的set數據結構最合適了,只需要不斷地將數據往set中扔就行了,set意為集合,所以會自動排重。
6.實時系統,反垃圾系統
通過上面說到的set功能,你可以知道一個終端用戶是否進行了某個操作,可以找到其操作的集合並進行分析統計對比等。沒有做不到,只有想不到。
7.Pub/Sub構建實時消息系統
Redis的Pub/Sub系統可以構建實時的消息系統,比如很多用Pub/Sub構建的實時聊天系統的例子。
8.構建隊列系統
使用list可以構建隊列系統,使用sorted set甚至可以構建有優先順序的隊列系統。
9.緩存
這個不必說了,性能優於Memcached,數據結構更多樣化。
Ⅸ 以下哪些是屬於redis list的操作命令
當客戶端連接被初始化後,Redis會查看目前的連接數
然後對比配置好的 maxclients 值,如果目前連接數已經達到最大連接數 maxclients 了,那麼說明這個連接不能再接收,Redis 會直接返回客戶端一個連接錯誤,並馬上關閉掉這個連接。