本文實例講述了python安裝與使用redis的方法。分享給大家供大家參考,具體如下:
1、安裝
好吧,我承認我只會最簡單的安裝:
sudo apt-get install redis-server
python 支持包: (其實就一個文件,搞過來就能用)
sudo apt-get install python-redis
2、配置
配置一下吧,默認配置文件在: "/etc/redis/redis.conf"
綁定ip:
"bind 127.0.0.1″ -> "bind 10.0.1.7″
將磁盤同步改為 不同步或每秒同步,一直同步的話太慢了:
"appendfsync always" -> "appendfsync no"
檢查一下后臺執行是否打開:
"daemonize yes"
或者其他你想設置的,例如:
連接超時時間 : "timeout 300″
運行級別: "loglevel notice" (個人認為默認的這個就挺好,非出現大異常,不用改為debug )
3、使用
#! /usr/bin/env python #coding=utf-8 import redis print redis.__file__ # 連接,可選不同數據庫 r = redis.Redis(host='10.0.1.7', port=6379, db=1) # ------------------------------------------- # 看信息 info = r.info() for key in info: print "%s: %s" % (key, info[key]) # 查數據庫大小 print ' dbsize: %s' % r.dbsize() # 看連接 print "ping %s" % r.ping() # 選數據庫 #r.select(2) # 移動數據去2數據庫 #r.move('a',2) # 其他 #r.save('a') # 存數據 #r.lastsave('a') # 取最后一次save時間 #r.flush() #刷新 #r.shutdown() #關閉所有客戶端,停掉所有服務,退出服務器 # #-------------------------------------------- # 它有四種類型: string(key,value)、list(序列)、set(集合)、zset(有序集合,多了一個順序屬性) # 不知道你用的哪種類型? # print r.get_type('a') #可以告訴你 # ------------------------------------------- # string操作 print '-'*20 # 塞數據 r['c1'] = 'bar' #或者 r.set('c2','bar') #這里有個 getset屬性,如果為True 可以在存新數據時將上次存儲內容同時搞出來 print 'getset:',r.getset('c2','jj') #如果你想設置一個遞增的整數 每執行一次它自加1: print 'incr:',r.incr('a') #如果你想設置一個遞減的整數 please: print 'decr:',r.decr('a') # 取數據 print 'r['']:',r['c1'] #或者 print 'get:',r.get('a') #或者 同時取一批 print 'mget:',r.mget('c1','c2') #或者 同時取一批 它們的名字(key)很像 而恰好你又不想輸全部 print 'keys:',r.keys('c*') #又或者 你只想隨機取一個: print 'randomkey:',r.randomkey() # 查看一個數據有沒有 有 1 無0 print 'existes:',r.exists('a') # 刪數據 1是刪除成功 0和None是沒這個東西 print 'delete:',r.delete('cc') # 哦對了 它是支持批量操作的 print 'delete:',r.delete('c1','c2') # 其他 r.rename('a','c3') #呃.改名 r.expire('c3',10) #讓數據10秒后過期 說實話我不太明白么意思 r.ttl('c3') #看剩余過期時間 不存在返回-1 #-------------------------------- # 序列(list)操作 print '-'*20 # 它是兩頭通的 # 塞入 r.push('b','gg') r.push('b','hh') # head 屬性控制是不是從另一頭塞 r.push('b','ee',head=True) # 看長度 print 'list len:',r.llen('b') # 列出一批出來 print 'list lrange:',r.lrange('b',start=0,end=-1) # 取出一位 print 'list index 0:',r.lindex('b',0) # 修剪列表 #若start 大于end,則將這個list清空 print 'list ltrim :',r.ltrim('b',start=0,end=3) #只留 從0到3四位 # 排序 # 這可是個大工程 #-------------------------------- # 集合(set)操作 # 塞數據 r.sadd('s', 'a') # 判斷一個set長度為多少 不存在為0 r.scard('s') # 判斷set中一個對象是否存在 r.sismember('s','a') # 求交集 r.sadd('s2','a') r.sinter('s1','s2') #求交集并將結果賦值 r.sinterstore('s3','s1','s2') # 看一個set對象 r.smembers('s3') # 求并集 r.sunion('s1','s2') # 阿 我想聰明的你已經猜到了 #求并集 并將結果返回 r.sunionstore('ss','s1','s2','s3') # 求不同 # 在s1中有,但在s2和s3中都沒有的數 r.sdiff('s1','s2','s3') r.sdiffstore('s4','s1','s2')# 這個你懂的 # 取個隨機數 r.srandmember('s1') #------------------------------------- #zset 有序set #'zadd', 'zcard', 'zincr', 'zrange', 'zrangebyscore', 'zrem', 'zscore' # 分別對應 #添加, 數量, 自加1,取數據,按照積分(范圍)取數據,刪除,取積分 # 我靠 你玩死我了 redis! # 今天在實驗中,我嘗試插入一條zset類型數據: r1.zset(u'www.liyi99.com','liwu',3) # 插入成功 # 我繼續插入 r1.zset(u'www.liyi99,com',u'u9001u793c',5) #報錯: #UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128) #這次插入的是禮物的中文詞 unicode編碼 #為什么會失敗那,這條數據是我從redis里面取出來然后沒做任何修改再插入的阿 #redis返回和接受的數據類型都是unicode編碼的阿 #好吧,我們再次插入試試 #再次插入 r1.zset('www.liyi99.com',u'u9001u793c',5) #成功了 #插入 r1.zset('www.liyi99.com','禮物',5) #依然成功,跟入redis.py 1024行 return self.send_command('ZADD %s %s %s %s ' % ( key, score, len(member), member)) # 哦 萬惡的編碼轉換! #不過取的時候,不論第一個是何種類型的數據都無關系
更多詳解python安裝與使用redis的方法相關文章請關注PHP中文網!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com