print "%s: %s" % (key, info[key])
#求并集 并將結果返回7. 應用場(chǎng)景 – 實(shí)時(shí)用戶(hù)統計
>>> r.hgetall('users:jdoe') for x in minutes]) >>> r.sadd('circle:soccer:InterMilan','user:Guo') user_key = 'user-activity/%s' % user_id
#zset 有序set
r.sdiff('s1','s2','s3')
{'phone': '1555313940', 'name': 'John Doe', 'visits': '1', 'email': 'John@test.com'}
print 'existes:',r.exists('a')print 'list ltrim :',r.ltrim('b',start=0,end=3) #只留 從0到3四位>>> r.save() #執行“檢查點(diǎn)”操作,將數據寫(xiě)回磁盤(pán)。保存時(shí)阻塞
每當有一個(gè)頁(yè)面點(diǎn)擊,則使用INCR增加點(diǎn)擊數即可。
# 求不同
# 判斷set中一個(gè)對象是否存在
print 'randomkey:',r.randomkey()
1L
>>> r.get('guo')
1L
# -------------------------------------------34636
r.dbsize() #數據庫中多少個(gè)條數
import redis
wget https://pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz
執行pipe = r.pipeline(transaction=False)可以禁用這一特性。
print 'decr:',r.decr('a')《Redis Cookbook》對這個(gè)經(jīng)典場(chǎng)景進(jìn)行詳細描述。假定我們對一系列頁(yè)面需要記錄點(diǎn)擊次數。例如論壇的每個(gè)帖子都要記錄點(diǎn)擊次數,而點(diǎn)擊次數比回帖的次數的多得多。如果使用關(guān)系數據庫來(lái)存儲點(diǎn)擊,可能存在大量的行級鎖爭用。所以,點(diǎn)擊數的增加使用redis的INCR命令最好不過(guò)了。
ONLINE_LAST_MINUTES = 5
>>> r.smembers('circle:game:lol')
#如果你想設置一個(gè)遞減的整數 please:
在社交網(wǎng)站中,每一個(gè)圈子(circle)都有自己的用戶(hù)群。通過(guò)圈子可以找到有共同特征(比如某一體育活動(dòng)、游戲、電影等愛(ài)好者)的人。當一個(gè)用戶(hù)加入一個(gè)或幾個(gè)圈子后,系統可以向這個(gè)用戶(hù)推薦圈子中的人。
<SHELL># apt-get install python-pip
頁(yè)面載入的時(shí)候則可直接獲取這個(gè)值
2 . 簡(jiǎn)單的redis操作
>>> r.get ("visit:1237:totals")
# 哦對了 它是支持批量操作的p.set(user_key, now) #記錄用戶(hù)的標記時(shí)間
當有大量類(lèi)型文檔的對象,文檔的內容都不一樣時(shí),(即“表”沒(méi)有固定的列),可以使用hash來(lái)表達。
# 這可是個(gè)大工程# 在s1中有,但在s2和s3中都沒(méi)有的數
print 'list len:',r.llen('b')
r = redis.Redis(host=’localhost’, port=6379, db=0)
# 移動(dòng)數據去2數據庫
print '\ndbsize: %s' % r.dbsize()
return redis.sunion(['online-users/%d' % (current - x) #取ONLINE_LAST_MINUTES分鐘對應集合的交集
# 查數據庫大小
r.sismember('s','a')
>>> r.set("visit:1237:totals",34634)
['name', 'email', 'phone', 'visits']
>>> r.keys()
redis> smembers circle:jdoe:family
print 'r['']:',r['c1']我們定義這樣兩個(gè)圈子,并加入一些圈子成員。
set(['user:Guo', 'user:leo'])
# 它有四種類(lèi)型: string(key,value)、list(序列)、set(集合)、zset(有序集合,多了一個(gè)順序屬性)可以使用集合運算來(lái)得到幾個(gè)圈子的共同成員:
>>> p.sadd('faz','baz')
>>> r.sadd('circle:soccer:InterMilan','user:Levis')
3. pipeline操作
# 它是兩頭通的......
# 排序
#--------------------------------
# 看一個(gè)set對象
Running setup.py (path:/tmp/pip_build_root/redis/setup.py) egg_info for package redis
Successfully installed redis
r.push('b','gg')>>> r.incr("visit:1237:totals")
expires = now + (app.config['ONLINE_LAST_MINUTES'] * 60) + 10 #過(guò)期的UNIX時(shí)間戳
#'zadd', 'zcard', 'zincr', 'zrange', 'zrangebyscore', 'zrem', 'zscore'[True, 1, 1]
p.sadd(all_users_key, user_id) #將用戶(hù)id插入到包含分鐘信息的集合中
r.delete(‘test’) #刪除這個(gè)key
1
1
# 刪數據 1是刪除成功 0和None是沒(méi)這個(gè)東西
4. 應用場(chǎng)景 – 頁(yè)面點(diǎn)擊數
#求交集并將結果賦值
>>> p.execute()
now = int(time.time()) #當前的UNIX時(shí)間戳
>>> r['guo']
r.smembers('s3')easy_install redis
print 'delete:',r.delete('c1','c2')print 'getset:',r.getset('c2','jj')
# 塞入
>>> r.hset('users:jdoe', 'email', 'John@test.com')
# head 屬性控制是不是從另一頭塞r['test'] = ‘test’ #或者可以r.set(‘test’, ‘test’) 設置key
#如果你想設置一個(gè)遞增的整數 每執行一次它自加1:r.exists(‘test’) #檢測這個(gè)key是否存在
<SHELL># pip install --proxy=http://172.1.2.6:8080 redis
# 求交集
'34636'
也可以使用easy_install的方式來(lái)安裝:
>>> r.hset('users:jdoe', 'name', "John Doe")
p.expireat(user_key, expires)
if last_active is None:
# 其他
# 列出一批出來(lái)
return datetime.utcfromtimestamp(int(last_active))
1
r.ttl('c3') #看剩余過(guò)期時(shí)間 不存在返回-1r.sunionstore('ss','s1','s2','s3')Cleaning up...
#r.lastsave('a') # 取最后一次save時(shí)間
1
print "ping %s" % r.ping()r.push('b','hh')>>> r.sunion('circle:game:lol', 'circle:soccer:InterMilan')
>>> r.set('guo','shuai')
>>> r.hincrby('users:jdoe', 'visits', 1)
5. 使用hash類(lèi)型保存多樣化對象
6. 應用場(chǎng)景 – 社交圈子數據
r.sadd('s2','a')
from redis import Redis
r.sdiffstore('s4','s1','s2')# 這個(gè)你懂的1L
# 求并集
>>> p.set('hello','redis')
print '-'*20# 修剪列表
# 取個(gè)隨機數
r.rename('a','c3') #呃.改名
current = int(time.time()) // 60
>>> r.flushdb() #清空r中的所有數據
>>> r.get('hello')
>>> r.sinter('circle:game:lol', 'circle:soccer:InterMilan') ['guo'] #-------------------------------- 1L minutes = xrange(app.config['ONLINE_LAST_MINUTES']) 或者直接編譯安裝: >>> r.hkeys('users:jdoe')
#獲得某一圈子的成員
'redis'
'shuai'
默認的情況下,管道里執行的命令可以保證執行的原子性,
set(['user:Guo', 'user:debugo', 'user:leo'])
>>> p.set('hello','redis').p.sadd('faz','baz').incr('num').execute()
# 看連接
print 'mget:',r.mget('c1','c2')
print 'incr:',r.incr('a')
# 取出一位
>>> r = redis.Redis(host='localhost',port=6379,db=0)
p = redis.pipeline()
print 'keys:',r.keys('c*')1
>>> r.sadd('circle:game:lol','user:debugo')
cd redis-2.9.1
34635
>>> r.sadd('circle:game:lol','user:leo')
True
True
def mark_online(user_id): #將一個(gè)用戶(hù)標記為online
redis = Redis()
# 塞數據1L
set(['user:Levis', 'user:Guo', 'user:debugo', 'user:leo'])
>>> r.sadd('circle:soccer:InterMilan','user:leo')
>>> r.incr("visit:1237:totals")
r.set('c2','bar')1
1
>>> r.get('guo');
管道(pipeline)是redis在提供單個(gè)請求中緩沖多條服務(wù)器命令的基類(lèi)的子類(lèi)。它通過(guò)減少服務(wù)器-客戶(hù)端之間反復的TCP數據庫包,從而大大提高了執行批量命令的功能。
#r.save('a') # 存數據return None
#又或者 你只想隨機取一個(gè):p.expireat(all_users_key, expires) #設定集合的過(guò)期時(shí)間為UNIX的時(shí)間戳
#-------------------------------------
>>> p = r.pipeline() --創(chuàng )建一個(gè)管道
r.scard('s')tar xvzf redis-2.9.1.tar.gz
print 'list lrange:',r.lrange('b',start=0,end=-1)'shuai'
>>> r.hset('users:jdoe', 'phone', '1555313940')
info = r.info()
redis連接實(shí)例是線(xiàn)程安全的,可以直接將redis連接實(shí)例設置為一個(gè)全局變量,直接使用。如果需要另一個(gè)Redis實(shí)例(or Redis數據庫)時(shí),就需要重新創(chuàng )建redis連接實(shí)例來(lái)獲取一個(gè)新的連接。同理,python的redis沒(méi)有實(shí)現select命令。
#--------------------------------------------
print 'list index 0:',r.lindex('b',0)
last_active = redis.get('user-activity/%s' % user_id) #如果獲取不到,則返回None
#r.shutdown() #關(guān)閉所有客戶(hù)端,停掉所有服務(wù),退出服務(wù)器免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站