redis python 操作 Python操作Redis資料庫

來源:互聯網
上載者:User

標籤:頭部   系統   ict   time   count   yum   json   長度   The   

原文章於此:https://www.cnblogs.com/cnkai/p/7642787.html

有個人修改與改正

 

 串連資料庫

StrictRedis
from redis import StrictRedis

#!/usr/bin/env python# coding: utf-8from redis import StrictRedisfrom redis import ConnectionPool# 使用預設1 連結到資料庫# redis = StrictRedis(host=‘localhost‘, port=6397, db=0)# 使用預設2 連結到資料庫# pool = ConnectionPool(host=‘localhost‘, port=6397, db=0)# redis = StrictRedis(ConnectionPool)# 使用 url 方法1 連結到資料庫# redis = StrictRedis.from_url(url=‘redis://localhost:6379/1‘)# 使用url 方法2 連結到資料庫pool = ConnectionPool.from_url(‘redis://@localhost:6379/1‘)redis = StrictRedis(connection_pool=pool)"""構造url方式串連到資料庫,有以下三種模式:redis://[:password]@host:port/db # TCP串連rediss://[:password]@host:port/db # Redis TCP+SSL 串連unix://[:password]@/path/to/socket.sock?db=db # Redis Unix Socket 串連"""

 

redis 裡面具體操作

 

String操作
方法 作用 樣本 樣本結果
set(name, value) 給name賦值為value redis.set(‘name’, ‘Bob’) True
get(name) 返回資料庫中key為name的string的value redis.get(‘name’) b’Bob’
getset(name, value) 給資料庫中key為name的string賦予值value並返回上次的value redis.getset(‘name’, ‘Mike’) b’Bob’
mget(keys, *args) 返回多個key對應的value redis.mget([‘name’, ‘nickname’]) [b’Mike’, b’Miker’]
setnx(name, value) 如果key不存在才設定value redis.setnx(‘newname’, ‘James’) 第一次運行True,第二次False
setex(name, time, value) 設定可以對應的值為string類型的value,並指定此索引值對應的有效期間 redis.setex(‘name’, 1, ‘James’) True
setrange(name, offset, value) 設定指定key的value值的子字串 redis.set(‘name’, ‘Hello’) redis.setrange(‘name’, 6, ‘World’) 11,修改後的字串長度
mset(mapping) 批量賦值 redis.mset({‘name1’: ‘Durant’, ‘name2’: ‘James’}) True
msetnx(mapping) key均不存在時才批量賦值 redis.msetnx({‘name3’: ‘Smith’, ‘name4’: ‘Curry’}) True
incr(name, amount=1) key為name的value增值操作,預設1,key不存在則被建立並設為amount redis.incr(‘age’, 1) 1,即修改後的值
decr(name, amount=1) key為name的value減值操作,預設1,key不存在則被建立並設定為-amount redis.decr(‘age’, 1) -1,即修改後的值
append(key, value) key為name的string的值附加value redis.append(‘nickname’, ‘OK’) 13,即修改後的字串長度
substr(name, start, end=-1) 返回key為name的string的value的子串 redis.substr(‘name’, 1, 4) b’ello’
getrange(key, start, end) 擷取key的value值從start到end的子字串 redis.getrange(‘name’, 1, 4) b’ello’
Key操作
方法 作用 樣本 樣本結果
exists(name) 判斷一個key是否存在 redis.exists(‘name’) True
delete(name) 刪除一個key redis.delete(‘name’) 1
type(name) 判斷key類型 redis.type(‘name’) b’string’
keys(pattern) 擷取所有符合規則的key redis.keys(‘n*’) [b’name’]
randomkey() 擷取隨機的一個key randomkey() b’name’
rename(src, dst) 將key重新命名 redis.rename(‘name’, ‘nickname’) True
dbsize() 擷取當前資料庫中key的數目 dbsize() 100
expire(name, time) 設定key的到期時間,單位秒 redis.expire(‘name’, 2) True
ttl(name) 擷取key的到期時間,單位秒,-1為永久不到期 redis.ttl(‘name’) -1
move(name, db) 將key移動到其他資料庫 move(‘name’, 2) True
flushdb() 刪除當前選擇資料庫中的所有key flushdb() True
flushall() 刪除所有資料庫中的所有key flushall() True
List操作
方法 作用 樣本 樣本結果
rpush(name, *values) 在key為name的list尾添加值為value的元素,可以傳多個 redis.rpush(‘list’, 1, 2, 3) 3,list大小
lpush(name, *values) 在key為name的list頭添加值為value的元素,可以傳多個 redis.lpush(‘list’, 0) 4,list大小
llen(name) 返回key為name的list的長度 redis.llen(‘list’) 4
lrange(name, start, end) 返回key為name的list中start至end之間的元素 redis.lrange(‘list’, 1, 3) [b’3’, b’2’, b’1’]
ltrim(name, start, end) 截取key為name的list,保留索引為start到end的內容 ltrim(‘list’, 1, 3) True
lindex(name, index) 返回key為name的list中index位置的元素 redis.lindex(‘list’, 1) b’2’
lset(name, index, value) 給key為name的list中index位置的元素賦值,越界則報錯 redis.lset(‘list’, 1, 5) True
lrem(name, count, value) 刪除count個key的list中值為value的元素 redis.lrem(‘list’, 2, 3) 1,即刪除的個數
lpop(name) 返回並刪除key為name的list中的首元素 redis.lpop(‘list’) b’5’
rpop(name) 返回並刪除key為name的list中的尾元素 redis.rpop(‘list’) b’2’
blpop(keys, timeout=0) 返回並刪除名稱為在keys中的list中的首元素,如果list為空白,則會一直阻塞等待 redis.blpop(‘list’) [b’5’]
brpop(keys, timeout=0) 返回並刪除key為name的list中的尾元素,如果list為空白,則會一直阻塞等待 redis.brpop(‘list’) [b’2’]
rpoplpush(src, dst) 返回並刪除名稱為src的list的尾元素,並將該元素添加到名稱為dst的list的頭部 redis.rpoplpush(‘list’, ‘list2’) b’2’
Set操作
方法 作用 樣本 樣本結果
sadd(name, *values) 向key為name的set中添加元素 redis.sadd(‘tags’, ‘Book’, ‘Tea’, ‘Coffee’) 3,即插入的資料個數
srem(name, *values) 從key為name的set中刪除元素 redis.srem(‘tags’, ‘Book’) 1,即刪除的資料個數
spop(name) 隨機返回並刪除key為name的set中一個元素 redis.spop(‘tags’) b’Tea’
smove(src, dst, value) 從src對應的set中移除元素並添加到dst對應的set中 redis.smove(‘tags’, ‘tags2’, ‘Coffee’) True
scard(name) 返回key為name的set的元素個數 redis.scard(‘tags’) 3
sismember(name, value) 測試member是否是key為name的set的元素 redis.sismember(‘tags’, ‘Book’) True
sinter(keys, *args) 返回所有給定key的set的交集 redis.sinter([‘tags’, ‘tags2’]) {b’Coffee’}
sinterstore(dest, keys, *args) 求交集並將交集儲存到dest的集合 redis.sinterstore(‘inttag’, [‘tags’, ‘tags2’]) 1
sunion(keys, *args) 返回所有給定key的set的並集 redis.sunion([‘tags’, ‘tags2’]) {b’Coffee’, b’Book’, b’Pen’}
sunionstore(dest, keys, *args) 求並集並將並集儲存到dest的集合 redis.sunionstore(‘inttag’, [‘tags’, ‘tags2’]) 3
sdiff(keys, *args) 返回所有給定key的set的差集 redis.sdiff([‘tags’, ‘tags2’]) {b’Book’, b’Pen’}
sdiffstore(dest, keys, *args) 求差集並將差集儲存到dest的集合 redis.sdiffstore(‘inttag’, [‘tags’, ‘tags2’]) 3
smembers(name) 返回key為name的set的所有元素 redis.smembers(‘tags’) {b’Pen’, b’Book’, b’Coffee’}
srandmember(name) 隨機返回key為name的set的一個元素,但不刪除元素 redis.srandmember(‘tags’)  
Sorted Set操作
方法 作用 樣本 樣本結果
zadd(name, args, *kwargs) 向key為name的zset中添加元素member,score用於排序。如果該元素存在,則更新其順序 redis.zadd(‘grade’, 100, ‘Bob’, 98, ‘Mike’) 2,即添加的元素個數
zrem(name, *values) 刪除key為name的zset中的元素 redis.zrem(‘grade’, ‘Mike’) 1,即刪除的元素個數
zincrby(name, value, amount=1) 如果在key為name的zset中已經存在元素value,則該元素的score增加amount,否則向該集合中添加該元素,其score的值為amount redis.zincrby(‘grade’, ‘Bob’, -2) 98.0,即修改後的值
zrank(name, value) 返回key為name的zset中元素的排名(按score從小到大排序)即下標 redis.zrank(‘grade’, ‘Amy’) 1
zrevrank(name, value) 返回key為name的zset中元素的倒數排名(按score從大到小排序)即下標 redis.zrevrank(‘grade’, ‘Amy’) 2
zrevrange(name, start, end, withscores=False) 返回key為name的zset(按score從大到小排序)中的index從start到end的所有元素 redis.zrevrange(‘grade’, 0, 3) [b’Bob’, b’Mike’, b’Amy’, b’James’]
zrangebyscore(name, min, max, start=None, num=None, withscores=False) 返回key為name的zset中score在給定區間的元素 redis.zrangebyscore(‘grade’, 80, 95) [b’Amy’, b’James’]
zcount(name, min, max) 返回key為name的zset中score在給定區間的數量 redis.zcount(‘grade’, 80, 95) 2
zcard(name) 返回key為name的zset的元素個數 redis.zcard(‘grade’) 3
zremrangebyrank(name, min, max) 刪除key為name的zset中排名在給定區間的元素 redis.zremrangebyrank(‘grade’, 0, 0) 1,即刪除的元素個數
zremrangebyscore(name, min, max) 刪除key為name的zset中score在給定區間的元素 redis.zremrangebyscore(‘grade’, 80, 90) 1,即刪除的元素個數
Hash操作
方法 作用 樣本 樣本結果
hset(name, key, value) 向key為name的hash中添加映射 hset(‘price’, ‘cake’, 5) 1,即添加的映射個數
hsetnx(name, key, value) 向key為name的hash中添加映射,如果映射鍵名不存在 hsetnx(‘price’, ‘book’, 6) 1,即添加的映射個數
hget(name, key) 返回key為name的hash中field對應的value redis.hget(‘price’, ‘cake’) 5
hmget(name, keys, *args) 返回key為name的hash中各個鍵對應的value redis.hmget(‘price’, [‘apple’, ‘orange’]) [b’3’, b’7’]
hmset(name, mapping) 向key為name的hash中大量新增映射 redis.hmset(‘price’, {‘banana’: 2, ‘pear’: 6}) True
hincrby(name, key, amount=1) 將key為name的hash中映射的value增加amount redis.hincrby(‘price’, ‘apple’, 3) 6,修改後的值
hexists(name, key) key為namehash中是否存在鍵名為key的映射 redis.hexists(‘price’, ‘banana’) True
hdel(name, *keys) key為namehash中刪除鍵名為key的映射 redis.hdel(‘price’, ‘banana’) True
hlen(name) 從key為name的hash中擷取映射個數 redis.hlen(‘price’) 6
hkeys(name) 從key為name的hash中擷取所有映射鍵名 redis.hkeys(‘price’) [b’cake’, b’book’, b’banana’, b’pear’]
hvals(name) 從key為name的hash中擷取所有映射索引值 redis.hvals(‘price’) [b’5’, b’6’, b’2’, b’6’]
hgetall(name) 從key為name的hash中擷取所有映射索引值對 redis.hgetall(‘price’) {b’cake’: b’5’, b’book’: b’6’, b’orange’: b’7’, b’pear’: b’6’}
RedisDump & Redis-load 資料匯出 和 資料匯入
    • redis-load
      將資料匯入到資料庫中
    • redis-dump 將資料匯出 (redis-dump 工具是用ruby 寫的。所以系統安裝完畢ruby後,要用ruby的gem install redis-dump 來匯出資料庫。  redis-dump -u :[email protected]:6379 >test.json

 

redis-load 操作如下

# 使用Unix pip 方式匯入資料# cat test.json | redis-load -u :[email protected]127.0.0.1:6379 
# 或者這樣 使用Unix 重新導向操作
# redis-load -u :[email protected]:6379 < test.json

 

 

 redis-dump 操作如下

安裝redis-dump[[email protected] ~] yum install ruby rubygems ruby-devel   //安裝rubygems 以及相關包 (redhat 系列系統,或者debian用apt等)   [[email protected] ~] gem sources -a http://gems.ruby-china.org/   //源,ruby china加入,外面的源不能訪問 http://gems.ruby-china.org/ added to sources    [[email protected] ~] gem install redis-dump -V redis-dump匯出資料[[email protected] ~] telnet 127.0.0.1 6379Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ‘^]‘. set test 11 //設定一個值 +OK get test //取值 $2 11[[email protected] ~] redis-dump -u :passwd@127.0.0.1:6379 >test.json

這就將資料庫內容匯出到 test.json 裡面了

 

 

 

 

redis python 操作 Python操作Redis資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.