この記事では、Python で redis モジュールをインストールして使用する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
[関連する推奨事項:Redis ビデオ チュートリアル]
pip3 install redis
import redis conn = redis.Redis(host='127.0.0.1', port=6379) # 可以使用url方式连接到数据库 # conn = Redis.from_url('redis://@localhost:6379/1') conn.set('name', 'LinWOW') print(conn.get('name'))Connection Poolredis との下位互換性のために使用されます。 -py は、接続プールを使用して Redis サーバーへのすべての接続を管理し、毎回の接続の確立と解放のオーバーヘッドを回避します。デフォルトでは、各 Redis インスタンスは独自の接続プールを維持します。接続プールを直接作成し、それをパラメータ Redis として使用すると、複数の Redis インスタンスが接続プールを共有できるようになります。接続プール: redis_pool.py
from redis import ConnectionPool POOL=ConnectionPool(host='127.0.0.1',port=6379,max_connections=100)接続プール: test_redis を使用します。 py
import redis from redis_pool import POOl conn = redis.Redis(connection_pool=POOl) conn.set('name', 'LinWOW') print(conn.get('name'))データベースに接続するための URL メソッドを構築します。次の 3 つのモードがあります:
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 连接
関数 | 例 | 結果の例 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ex, 有効期限 (秒); px, 有効期限時間 (ミリ秒); nx、True に設定すると、現在の設定操作は名前が存在しない場合にのみ実行されます。値が存在する場合は変更できず、実行は効果がありません。xx、True に設定すると、現在の設定操作は、名前が存在する場合にのみ実行されます。値は、値が存在する場合にのみ変更できます。値が存在しない場合、新しい値は設定されません。 | 効果は次と同じです。 setex と setnx | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
値を name に割り当てます | redis.set( 'name', 'Bob') | True | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
データベース内の name をキーとする文字列の値を返します | redis.get('name') | b'Bob' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
値の割り当てデータベース内の name をキーとする文字列に代入し、最後の値を返します | #redis.getset('name', 'Mike') | b'Bob' | ##mget(keys, *args) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.mget(['name', 'nickname']) | [b'Mike', b'Miker'] | setnx(name, value ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.setnx('newname', 'James') | 初回は True、2 回目は False | setex(name, time, value) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#redis .setex('name', 1, 'James') | True | setrange(name, offset, value) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.set('name' , 'Hello') redis.setrange('name', 6, 'World') | 11, 変更された文字列長 | mset(mapping) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.mset({'name1': 'Durant', 'name2': ' James'}) | True | ##msetnx(マッピング) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.msetnx ({'name3': 'Smith', 'name4': 'Curry'}) | True | incr(name, amount=1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
redis.incr('age', 1) | 1 (つまり、変更後) に設定されます。 | の値 | decr(name, amount=1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-1、これは変更された値です | append(key, value) | key は、name | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 の文字列値に value を追加します。これは、変更された文字列の長さです | substr(name, start, end=-1) | キーが name である文字列の値の部分文字列を返します | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
b'ello' | getrange(key, start, end) | 先頭から末尾までのキーの値を取得します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
b'ello' | の |
メソッド | 関数 | 例 | 結果の例 |
---|---|---|---|
キーが存在するかどうかを確認する | ##redis.exists('name') | True | |
キーを削除します | redis.delete('name') | 1 | #type(name) |
redis.type('name') | b'string' | keys(pattern) | |
redis.keys('n*') | [ b' name'] | randomkey() | |
randomkey() | b'name' | rename(src, dst) | |
redis.rename('name', 'nickname') | True | dbsize() | |
dbsize() | 100 | expire(name, time) | |
redis.expire('name', 2) | True | ttl(name) | |
redis。 ttl('name ') | -1 | #move(name, db) | |
move( 'name ', 2) | True | flushdb() | |
flushdb( ) | True | flushall() | |
flushall() | True | #リスト操作 |
結果の例 | rpush(name, *values) | ||
---|---|---|---|
3, list size | # を渡すことができます。 | ##lpush(name, *values)キー名を持つリスト ヘッダーに値として value を持つ要素を追加します。複数の | redis.lpush('list' を渡すことができます) , 0) |
llen(name) | キー名を持つリストの長さを返します | redis.llen(' list') | |
##lrange(name, start, end) | リストの開始と終了の間の要素を返しますキーの名前は | redis.lrange('list', 1, 3) | |
ltrim(name, start, end) | キーが name であるリストをインターセプトし、先頭から末尾までインデックス付きのコンテンツを保持します | ltrim('list', 1 , 3) | |
lindex(name,index) | キー名を持つリストのインデックス位置の要素を返します | redis.lindex(' list', 1) | |
lset(名前, インデックス, 値) | キー名を持つリスト内のインデックス位置要素に値が割り当てられている場合、境界を越えるとエラーが報告されます。 | #redis.lset('list', 1, 5)True | |
lrem(name, count, value) | count キーのリスト内の値が value である要素を削除します | redis.lrem ('list', 2, 3) | 1、つまり削除された要素 Number |
lpop(name) | 戻り、削除します。キー名を持つリストの最初の要素 | redis.lpop('list') | b'5' |
rpop(name) | キー名を持つリストの最後の要素を返し、削除します。 | redis .rpop('list') | b'2' |
blpop(keys, timeout=0) | keys 内の名前を返して削除します。リストの最初の要素。リストが空の場合、常にブロックして待機します。 | redis。 blpop('list') | [b'5'] |
brpop(keys, timeout=0) | 戻り、最後の要素を削除しますキーが name のリストにあります。リストが空の場合は、常にブロックして待機します | #redis .brpop('list') | #[b'2']|
src という名前のファイルを返し、リストの末尾要素を削除し、その要素を dst という名前のリストの先頭に追加します | redis.rpoplpush('list', 'list2') | b'2' |
方法 | 作用 | 示例 | 示例结果 |
---|---|---|---|
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’) |
メソッド | 関数 | 例 | 結果の例 |
---|---|---|---|
zadd(name, args, *kwargs) | キーが name である要素メンバーを zset に追加し、スコアはソートに使用されます。要素が存在する場合は、その順序 | #redis.zadd('grade', 100, 'Bob', 98, 'Mike')2 (追加された要素の数) を更新します | |
キーが name である zset 内の要素を削除します | redis.zrem('grade', 'Mike ' ) | 1、つまり削除された要素の数 | |
If in the zsetキーは name です要素の値がコレクションに既に存在する場合、要素のスコアは amount だけ増加します。それ以外の場合、要素はコレクションに追加され、そのスコア値は amount | redis.zincrby(' Grade', 'Bob', -2) | 98.0、つまり変更された値 | |
キーが名前である zset 内の要素のランキング (スコアによる小さいものから大きいものへの並べ替え)、つまり添え字 | redis.zrank('grade', 'Amy') | 1 | #zrevrank(name, value ) |
redis.zrevrank('grade', 'Amy') | 2 | zrevrange(name, start, end, withscores=False) | |
redis.zrevrange('grade', 0, 3) | [b'ボブ', b'マイク', b'エイミー', b'ジェームス'] | zrangebyscore(name, min, max, start=None, num =None、withscores=False) | |
redis.zrangebyscore('grade', 80, 95) | [b'Amy', b'James'] | zcount(name, min, max) | |
redis.zcount('grade', 80, 95) | 2 | zcard(name) | |
redis.zcard('grade') | 3 | zremrangebyrank(name, min である zset の要素の数を返します。 、max) | |
redis.zremrangebyrank('grade', 0, 0) | 1 を持つ zset 内の指定された間隔でランク付けされた要素を削除します。は削除された要素の数です。 | zremrangebyscore(name, min, max) | |
redis.zremrangebyscore('grade', 80, 90) | 1、つまり要素の数を削除します |
例 | 結果の例 | ||
---|---|---|---|
hset('price', 'cake', 5) | 1 (追加されたマッピングの数) | hsetnx(name, key, value) | |
hsetnx('price', 'book', 6) | 1、つまり追加されたマッピングの数 | ##hget(name, key) | |
redis.hget('price', 'cake') | 5 | ##hmget(name, key, *args) | |
redis.hmget('価格', ['リンゴ', 'オレンジ']) | [b'3', b'7 '] | hmset(名前, マッピング) | |
redis.hmset('price', {'banana': 2, 'pear': 6}) | #Truehincrby(name, key, amount=1) | will キーは、名前のハッシュにマッピングされた値です。金額を追加します | |
##hexists(name, key) | key は、namehash に key という名前のキーとのマッピングがあるかどうかです。 | redis.hexists('price', 'banana') | |
hdel(name, *keys) | key は、namehash の key という名前のキーを削除するマッピングです。 | redis.hdel( 'price', 'banana') | |
hlen(name) | キー名のハッシュからマッピングの数を取得します | redis.hlen('price ') | |
hkeys(name) | キー名マッピングキー名を持つすべてのハッシュを取得 | redis.hkeys ('価格') | |
hvals(名前) | キー名のハッシュからすべてのマッピング キー値を取得 | redis.hvals('price') | |
hgetall(name) | キー名マッピングのキーと値のペア | redis を持つすべてのハッシュを取得します。 hgetall('価格') | |
注意点: hscan(name, cursor=0, match=None, count=None):增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,并非一次性将数据全部获取完,从而放置内存被撑爆 参数: name,redis的name cursor,游标(基于游标分批取获取数据) match,匹配指定key,默认None 表示所有的key count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数 如: 第一次:cursor1, data1 = r.hscan('xx', cursor=0, match=None, count=None) 第二次:cursor2, data1 = r.hscan('xx', cursor=cursor1, match=None, count=None) ... 直到返回值cursor的值为0时,表示数据已经通过分片获取完毕 hscan_iter(name, match=None, count=None): 利用yield封装hscan创建生成器,实现分批去redis中获取数据 参数: match,匹配指定key,默认None 表示所有的key count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数 如: for item in r.hscan_iter('xx'): print item 管道redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。 import redis pool = redis.ConnectionPool(host='10.211.55.4', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True) pipe.multi() pipe.set('name', 'linwow') pipe.set('age', '18') pipe.execute() Django中使用redis方式一: utils文件夹下,建立redis_pool.py import redis POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,password='1234',max_connections=1000) 视图函数中使用: import redis from django.shortcuts import render,HttpResponse from redis_pool import POOL def index(request): conn = redis.Redis(connection_pool=POOL) conn.hset('liwow','age',18) return HttpResponse('设置成功') def order(request): conn = redis.Redis(connection_pool=POOL) conn.hget('kkk','age') return HttpResponse('获取成功') 方式二: 安装django-redis模块 pip3 install django-redis setting里配置: # redis配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "123", } } } 视图函数: from django_redis import get_redis_connection conn = get_redis_connection('default') print(conn.hgetall('xxx')) 更多编程相关知识,请访问:编程教学!! |
以上がPython で redis モジュールをインストールして使用する方法についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。