㈠ python 的 redis 庫,連接池怎麼用
連接池的作用是當前連接斷掉了自動重連
使用方法 https://github.com/andymccurdy/redis-py#connection-pools
你可以全局都公用一個 redis client
By default, each Redis instance you create will in turn create its own connection pool.
你可以不用自己手動使用連接池
Redis 的連接池是多線程安全的、多進程安全的、自動重連的。
你扔 flask.g 之類的全局的地方當然也行,反正 Redis 總是會使用連接池(不指定它每次就用一個新的)。顯式指定連接池的話差異不大,反正你總是要手動在某個全局的地方存一樣東西(連接池對象或者 Redis 對象)。
㈡ python 虛擬環境里怎麼啟動redis
運行
打開Python解釋器:
>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0) #如果設置了密碼,就加上password=密碼
>>> r.set('foo', 'bar') #或者寫成 r['foo'] = 'bar'
True
>>> r.get('foo')
'bar'
>>> r.delete('foo')
True
>>> r.dbsize() #庫里有多少key,多少條數據
0
>>> r['test']='OK!'
㈢ python 中對redis 操作採用裝飾器進行處理,怎麼做
redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。importredis導入redis模塊,通過python操作redis也
㈣ python 用redis做什麼功能
redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,
並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。
import redis 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存資料庫
r = redis.Redis(host='192.168.19.130', port=6379) host是redis主機,需要redis服務端和客戶端都起著 redis默認埠是6379
r.set('foo', 'Bar') key是"foo" value是"bar" 將鍵值對存入redis緩存
print r.get('foo') Bar 取出鍵foo對應的值!
㈤ 編寫一個python程序實現redis集群的訪問
用python-2.7.3\python是對的,但是你的hello.py放在那裡?你需要先用「cd 目錄名」轉換當前目錄到存放hello.py的地方,然後執行python-2.7.3\python hello.py。
㈥ python怎麼將數據寫入到redis
代碼如下:
import redis
class Database:
def __init__(self):
self.host = 'localhost'
self.port = 6379
def write(self,website,city,year,month,day,deal_number):
try:
key = '_'.join([website,city,str(year),str(month),str(day)])
val = deal_number
r = redis.StrictRedis(host=self.host,port=self.port)
r.set(key,val)
except Exception, exception:
print exception
def read(self,website,city,year,month,day):
try:
key = '_'.join([website,city,str(year),str(month),str(day)])
r = redis.StrictRedis(host=self.host,port=self.port)
value = r.get(key)
print value
return value
except Exception, exception:
print exception
if __name__ == '__main__':
db = Database()
db.write('meituan','beijing',2013,9,1,8000)
db.read('meituan','beijing',2013,9,1)
㈦ python怎麼測試與redis的連接
Redis服務端:192.168.100.132;port=6379
Redis客戶端:192.168.100.132
客戶端操作:
安裝python支持redis;
tar zxvf redis-2.9.1.tar.gz
cd redis-2.9.1
python setup.py install
服務端啟動redis
/root/redis-2.2.12/src/redis-server
客戶端測試:
[root@master ~]# python
>>> import redis
>>> r = redis.Redis(host='192.168.100.132',port=6379,db=0) //#如果設置了密碼,就加上password=密碼
>>> r.set('name','lansgg')
True
>>> r.get('name')
'lansgg'
>>> r.exists('name') //#看是否存在這個鍵值
True
>>> r.delete('name')
1
>>> r.dbsize() //#庫里有多少key,多少條數據
0L
>>> r.set('name','lansgg')
True
>>> r.flushdb() // #刪除當前資料庫的所有數據
True
>>> r.get('name')
>>> r.set('name','lansgg')
True
>>> r.set('wm','leo')
True
>>> r.set('tt','coffee')
True
>>> r.keys() // # 列出所有鍵值。
['tt', 'wm', 'name']
>>> r.save() // #強行把資料庫保存到硬碟。保存時阻塞
True
>>> r.dbsize()
3L
>>> dir(r)
['RESPONSE_CALLBACKS', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__mole__', '__new__', '__rece__', '__rece_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_zaggregate', 'append', 'bgrewriteaof', 'bgsave', 'bitcount', 'bitop', 'blpop', 'brpop', 'brpoplpush', 'client_getname', 'client_kill', 'client_list', 'client_setname', 'config_get', 'config_resetstat', 'config_set', 'connection_pool', 'dbsize', 'debug_object', 'decr', 'delete', 'mp', 'echo', 'eval', 'evalsha', 'execute_command', 'exists', 'expire', 'expireat', 'flushall', 'flushdb', 'from_url', 'get', 'getbit', 'getrange', 'getset', 'hdel', 'hexists', 'hget', 'hgetall', 'hincrby', 'hincrbyfloat', 'hkeys', 'hlen', 'hmget', 'hmset', 'hscan', 'hset', 'hsetnx', 'hvals', 'incr', 'incrby', 'incrbyfloat', 'info', 'keys', 'lastsave', 'lindex', 'linsert', 'llen', 'lock', 'lpop', 'lpush', 'lpushx', 'lrange', 'lrem', 'lset', 'ltrim', 'mget', 'move', 'mset', 'msetnx', 'object', 'parse_response', 'persist', 'pexpire', 'pexpireat', 'ping', 'pipeline', 'psetex', 'pttl', 'publish', 'pubsub', 'randomkey', 'register_script', 'rename', 'renamenx', 'response_callbacks', 'restore', 'rpop', 'rpoplpush', 'rpush', 'rpushx', 'sadd', 'save', 'scan', 'scard', 'script_exists', 'script_flush', 'script_kill', 'script_load', 'sdiff', 'sdiffstore', 'sentinel', 'sentinel_get_master_addr_by_name', 'sentinel_masters', 'sentinel_sentinels', 'sentinel_slaves', 'set', 'set_response_callback', 'setbit', 'setex', 'setnx', 'setrange', 'shutdown', 'sinter', 'sinterstore', 'sismember', 'slaveof', 'smembers', 'smove', 'sort', 'spop', 'srandmember', 'srem', 'sscan', 'strlen', 'substr', 'sunion', 'sunionstore', 'time', 'transaction', 'ttl', 'type', 'unwatch', 'watch', 'zadd', 'zcard', 'zcount', 'zincrby', 'zinterstore', 'zrange', 'zrangebyscore', 'zrank', 'zrem', 'zremrangebyrank', 'zremrangebyscore', 'zrevrange', 'zrevrangebyscore', 'zrevrank', 'zscan', 'zscore', 'zunionstore']
這只是一個簡單的測試,為了測試redis是否正常工作,我們安裝是否正確;
㈧ 怎樣設計python腳本實現redis的set命令
#!/usr/bin/python
#coding=utf-8
import redis
class CRedis:
def __init__(self):
self.host = 'localhost'
self.port = 6379
self.db = 0
self.r = redis.Redis(host = self.host, port = self.port, db = self.db)
#1. strings 類型及操作
#設置 key 對應的值為 string 類型的 value
def set(self, key, value):
return self.r.set(key, value)
#設置 key 對應的值為 string 類型的 value。如果 key 已經存在,返回 0,nx 是 not exist 的意思
def setnx(self, key, value):
return self.r.setnx(key, value)
#設置 key 對應的值為 string 類型的 value,並指定此鍵值對應的有效期
def setex(self, key, time, value):
return self.r.setex(key, time, value)
#設置指定 key 的 value 值的子字元串
#setrange name 8 gmail.com
#其中的 8 是指從下標為 8(包含 8)的字元開始替換
def setrange(self, key, num, value):
return self.r.setrange(key, num, value)
#獲取指定 key 的 value 值的子字元串
def getrange(self, key, start ,end):
return self.r.getrange(key, start, end)
#mget(list)
def get(self, key):
if isinstance(key, list):
return self.r.mget(key)
else:
return self.r.get(key)
#刪除
def remove(self, key):
return self.r.delete(key)
#自增
def incr(self, key, default = 1):
if (1 == default):
return self.r.incr(key)
else:
return self.r.incr(key, default)
#自減
def decr(self, key, default = 1):
if (1 == default):
return self.r.decr(key)
else:
return self.r.decr(key, default)
#2. hashes 類型及操作
#根據email獲取session信息
def hget(self, email):
return self.r.hget('session', email)
#以email作為唯一標識,增加用戶session
def hset(self, email, content):
return self.r.hset('session', email, content)
#獲取session哈希表中的所有數據
def hgetall(self):
return self.r.hgetall('session')
#刪除hashes
def hdel(self, name, key = None):
if(key):
return self.r.hdel(name, key)
return self.r.hdel(name)
#清空當前db
def clear(self):
return self.r.flushdb()
#3、lists 類型及操作
#適合做郵件隊列
#在 key 對應 list 的頭部添加字元串元素
def lpush(self, key ,value):
return self.r.lpush(key, value)
#從 list 的尾部刪除元素,並返回刪除元素
def lpop(self, key):
return self.r.plush(key)
if __name__ == '__main__':
r = CRedis()
㈨ python把字典存到redis怎麼使用
python把字典存到redis怎麼使用
先寫個測試redis是否正常連接上
import redis
cache = redis.StrictRedis('172.20.0.227',6379)
存儲字元串
key = "javaman_test"
value = "test_string_yy"
cachevalue = cache.get(key)
存儲Dict對象,取出來為字元串
value = {"id":1,"name":"sunxy"}
cache.set(key,value,60)
cachevalue = cache.get(key)
print type(value),type(cachevalue)
這時使用eval()對獲取的結果轉換成dict
cachevalue = cache.get(key)
trans_value = eval(cachevalue)
print type(trans_value),trans_value.get("name")
如果不是一個dict,直接是一個對象呢?
之前用了django中的對象,來看一下
取出來仍然是字元串,如何把對象存進去呢
eval()只是將結果轉換成字典,這個肯定不行,我們應該需要將對象存到redis中。
使用pickle模塊,在存入到redis中時調用mps函數,獲取後調用loads函數
import pickleredis.set(key,pickle.mps(xt_instry),180)
pickle.loads(result)
㈩ python 獲取的redis里的數據怎麼處理
一、獲取所有Key
[python]view plain
#-*-encoding:UTF-8-*-
__author__="Sky"
importredis
pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)
r=redis.StrictRedis(connection_pool=pool)
keys=r.keys()
printtype(keys)
printkeys
運行結果:
<type 'list'>
['fad', '1', '2']
二、獲取所有內容
[python]view plain
importredis
pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)
r=redis.Redis(connection_pool=pool)
pipe=r.pipeline()
pipe_size=100000
len=0
key_list=[]
printr.pipeline()
keys=r.keys()
forkeyinkeys:
key_list.append(key)
pipe.get(key)
iflen<pipe_size:
len+=1
else:
for(k,v)inzip(key_list,pipe.execute()):
printk,v
len=0
key_list=[]
for(k,v)inzip(key_list,pipe.execute()):
printk,v
運行結果:
fad fda
1 e