ゼロから学ぶPython (5) データベースプログラミング:Redisデータベース

序文

振り返ってみると、私は Python 構文プログラミング、必須の入門基礎とネットワーク プログラミング、マルチスレッド/マルチプロセス/コルーチンなどについて話し、昨日はデータベース プログラミング MySQL について話し、そして今日は Redis の 2 番目の章について話しました。記事が整理されました:

1. Pythonをゼロから学ぶ (1) 必修プログラミング文法
2. Pythonをゼロから学ぶ (2) ネットワークプログラミング
3. Pythonをゼロから学ぶ (3) マルチスレッド/マルチプロセス/コルーチン
4. 学ぶ私とゼロから始めるPython (4) データベースプログラミング:MySQLデータベース

この記事では次について説明します: Python データベース プログラミング: Redis データベース

公式アカウントに注目:Pythonテクノロジートレーニングキャンプ、一歩ずつ高度に学びます

ゼロベース学習や上級者に適した Python リソース:

① Tencent 認定 Python 完全プロジェクト実践チュートリアル ノート PDF
② 十数社の大手メーカーの Python インタビュー トピック PDF
③ Python フルセットのビデオ チュートリアル (ゼロ基礎から上級、高度な JS リバース)
④ 数百のプロジェクト実戦 + ソース コード + ノート
⑤ プログラミング文法~機械学習~フルスタック開発~データ解析~クローラー~APPリバースエンジニアリング等プロジェクト一式+ドキュメント
⑥交流・勉強
⑦パートタイムで受注したい

このシリーズの記事は、内容が膨大であるため、次の学習ルートに基づいています。

Python をゼ​​ロから学習して高度なロードマップを構築する

Python データベース プログラミング: Redis データベース

1. サーバーとクライアントの基本操作コマンド

Redis は、キャッシュ、メッセージ キュー、リーダーボードなどのシナリオでよく使用されるメモリ ベースのデータ構造ストレージ システムです。ここでは、Redis サーバーとクライアントの基本的な操作コマンドをいくつか紹介します。

1. サーバーコマンド

Redis サービスを開始する

redis-server

Redis サービスを閉じます

redis-cli shutdown

Redis サービスのステータスを表示する

redis-cli ping

Redis サービスのバージョンを表示する

redis-cli info server

Redis サービス構成の表示

redis-cli config get *

Redis サービス構成を変更する

redis-cli config set <parameter> <value>

2. クライアントコマンド

Redis サービスに接続する

redis-cli -h <host> -p <port> -a <password>

キーと値のペアを設定する

redis-cli set <key> <value>

キーと値のペアを取得する

redis-cli get <key>

キーと値のペアを削除する

redis-cli del <key>

キーが存在するかどうかを確認する

redis-cli exists <key>

キーの有効期限を設定する

redis-cli expire <key> <seconds>

キーの有効期限を確認する

redis-cli ttl <key>

すべてのキーを表示

redis-cli keys *

キーの種類を表示する

redis-cli type <key>

リスト操作

redis-cli lpush <key> <value>  # 从左侧插入元素
redis-cli rpush <key> <value>  # 从右侧插入元素
redis-cli lrange <key> <start> <stop>  # 获取列表元素
redis-cli lpop <key>  # 从左侧弹出元素
redis-cli rpop <key>  # 从右侧弹出元素

集合演算

redis-cli sadd <key> <value>  # 添加元素
redis-cli smembers <key>  # 获取所有元素
redis-cli sismember <key> <value>  # 判断元素是否存在
redis-cli srem <key> <value>  # 删除元素

ハッシュテーブルの操作

redis-cli hset <key> <field> <value>  # 设置字段值
redis-cli hget <key> <field>  # 获取字段值
redis-cli hgetall <key>  # 获取所有字段和值
redis-cli hdel <key> <field>  # 删除字段

ソートされた集合演算

redis-cli zadd <key> <score> <value>  # 添加元素
redis-cli zrange <key> <start> <stop>  # 获取元素
redis-cli zrem <key> <value>  # 删除元素

以上がRedisサーバーとクライアントの基本的な操作コマンドですが、その他のコマンドについてはRedisの公式ドキュメントを参照してください。

2. データ操作

1.文字列

Redis は、複数のデータ構造 (そのうちの 1 つは文字列) をサポートするメモリベースのデータ ストレージ システムです。Python では、redis-py ライブラリを使用して、Redis データベース内の文字列データ型を操作できます。

一般的に使用される Redis 文字列操作コマンドの一部を次に示します。

①.set(key, value): キーに対応する値を設定します。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('name', 'Tom')

②.get(key): キーに対応する値を取得します。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

name = r.get('name')
print(name)

③.mset(mapping):複数のキーと値のペアを一括で設定する

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.mset({'name': 'Tom', 'age': 18})

④.mget(keys):複数のキーに対応する値を一括取得

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

values = r.mget(['name', 'age'])
print(values)

⑤.incr(key, amount=1): キーに対応する値をamountだけ増加させます。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('count', 1)
r.incr('count')

⑥.decr(key, amount=1): キーに対応する値をamountだけ減少させます。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('count', 10)
r.decr('count', 5)

⑦.append(key, value): キーに対応する値の末尾に値を追加します。

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('name', 'Tom')
r.append('name', ' Smith')

⑧.strlen(key): キーに対応する値の長さを取得

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

name_len = r.strlen('name')
print(name_len)

上記は Redis 文字列データ型の基本的な操作コマンドの一部であり、実際のニーズに応じて使用できます。

2. キーコマンド

Redis のキー コマンドは、キーと値のペアを管理および操作するために使用されます。よく使用されるいくつかの主要なコマンドを次に示します

  • SET key value : キーと値のペアを設定します。キーがすでに存在する場合、元の値は上書きされます。
  • GET key : キーに対応する値を取得します。
  • DEL キー: 指定されたキーと値のペアを削除します。
  • EXISTS key : 指定されたキーが存在するかどうかを確認します。
  • KEYS pattern : 指定されたパターンに一致するすべてのキーを検索します。
  • TTL キー: キーの有効期限を秒単位で取得します。
  • EXPIRE キー秒数: キーの有効期限を秒単位で設定します。
  • PERSIST key : キーの有効期限を削除して、キーを永続的に有効にします。
  • TYPE key : キーに対応する値のデータ型を取得します。

これらのコマンドは、Python Redis モジュールの対応するメソッドを通じて呼び出すことができます。たとえば、次のようになります。

import redis

# 连接Redis数据库
r = redis.Redis(host='localhost', port=6379, db=0)

# 设置键值对
r.set('name', 'Alice')

# 获取键对应的值
name = r.get('name')
print(name)

# 删除指定的键值对
r.delete('name')

# 检查指定的键是否存在
exists = r.exists('name')
print(exists)

# 查找所有符合给定模式的键
keys = r.keys('*')
print(keys)

# 获取键的过期时间
ttl = r.ttl('name')
print(ttl)

# 设置键的过期时间
r.expire('name', 60)

# 移除键的过期时间
r.persist('name')

# 获取键对应的值的数据类型
type = r.type('name')
print(type)

3.ハッシュ

Redis では、ハッシュはキーと値のペアのコレクションであり、キーと値は両方とも文字列型です。ハッシュは、ユーザー情報、製品情報などのオブジェクトを保存するために使用できます。

以下は、Python Redis でハッシュを操作するための一般的なコマンドの一部です。

①.HSET(key, field, value): 指定したフィールドの値をハッシュに設定します。

redis_conn.hset('user:1', 'name', 'Alice')

②.HGET(key, field): ハッシュ内の指定フィールドの値を取得します。

redis_conn.hget('user:1', 'name')

③.HMSET(key,mapping):ハッシュ内の複数のフィールドの値を設定します

redis_conn.hmset('user:1', {'age': 20, 'gender': 'female'})

④.HMGET(key,fields):ハッシュ内の複数フィールドの値を取得

redis_conn.hmget('user:1', 'name', 'age', 'gender')

⑤.HGETALL(key): ハッシュ内のすべてのフィールドと値を取得します

redis_conn.hgetall('user:1')

⑥.HDEL(キー, フィールド): ハッシュ内の指定されたフィールドを削除します。

redis_conn.hdel('user:1', 'gender')

⑦.HEXISTS(key, field): 指定されたフィールドがハッシュに存在するかどうかを判定します。

redis_conn.hexists('user:1', 'gender')

⑧.HKEYS(key): ハッシュ内のすべてのフィールドを取得します。

redis_conn.hkeys('user:1')

⑨.HVALS(key): ハッシュ内のすべての値を取得します

redis_conn.hvals('user:1')

⑩.HLEN(key): ハッシュ内のフィールド数を取得

redis_conn.hlen('user:1')

上記は、Python Redis でハッシュを操作するための一般的なコマンドの一部であり、実際のニーズに応じて選択できます。

4.リスト

Redisのリストは、先頭と末尾の挿入と削除をサポートする二重リンクリストです。リスト内の各要素は文字列です。

redis-py ライブラリを Python で使用して、Redis データベースの List データ型を操作できます。

まず、redis ライブラリをインポートする必要があります。

import redis

Redis データベースに接続します。

r = redis.Redis(host='localhost', port=6379, db=0)

リスト操作

①. 要素の挿入

リストの先頭に 1 つ以上の要素を挿入します。

r.lpush('list_key', 'value1', 'value2', 'value3')

リストの最後に 1 つ以上の要素を挿入します。

r.rpush('list_key', 'value4', 'value5', 'value6')

指定した要素の前後に要素を挿入します。

r.linsert('list_key', 'BEFORE', 'value2', 'new_value')
r.linsert('list_key', 'AFTER', 'value2', 'new_value')

②.要素を取得する

リスト内の指定された範囲内の要素を取得します。

r.lrange('list_key', 0, -1)  # 获取所有元素
r.lrange('list_key', 0, 2)  # 获取前三个元素
r.lrange('list_key', -3, -1)  # 获取后三个元素

リスト内の指定されたインデックスにある要素を取得します。

r.lindex('list_key', 0)  # 获取第一个元素
r.lindex('list_key', -1)  # 获取最后一个元素

③. 要素の削除

リストの先頭から要素を削除します。

r.lpop('list_key')

リストの末尾から要素を削除します。

r.rpop('list_key')

リスト内の指定された要素を削除します。

r.lrem('list_key', 0, 'value2')  # 删除所有值为value2的元素
r.lrem('list_key', 1, 'value2')  # 删除第一个值为value2的元素
r.lrem('list_key', -1, 'value2')  # 删除最后一个值为value2的元素

④. その他の操作

リストの長さを取得します。

r.llen('list_key')

リスト内の最後の要素を別のリストの先頭に移動します。

r.rpoplpush('list_key', 'new_list_key')

あるリストの末尾から要素をブロック的にポップし、別のリストの先頭に挿入します。

r.brpoplpush('list_key', 'new_list_key', timeout=0)

上記は、Python で Redis データベースの List データ型を操作する一般的な方法です。

5.セット

Redis の Set は順序付けされていないコレクションであり、その機能は List と同様であり、複数の文字列要素のコレクションです。ただし、Set では重複要素が許可されておらず、Set 内の要素に順序がないという点で、Set は List とは異なります。

Python で Redis のセットを操作するには、redis モジュールの set メソッドを使用します。一般的に使用される Set 操作の一部を次に示します。

①.要素を追加する

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 添加单个元素
r.sadd('set_key', 'value1')

# 添加多个元素
r.sadd('set_key', 'value2', 'value3', 'value4')

②.要素を取得する

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 获取所有元素
members = r.smembers('set_key')
print(members)

# 判断元素是否存在
is_member = r.sismember('set_key', 'value1')
print(is_member)

③. 要素の削除

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 删除单个元素
r.srem('set_key', 'value1')

# 删除多个元素
r.srem('set_key', 'value2', 'value3', 'value4')

# 删除集合
r.delete('set_key')

④. セット操作

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 求交集
r.sadd('set_key1', 'value1', 'value2', 'value3')
r.sadd('set_key2', 'value2', 'value3', 'value4')
intersection = r.sinter('set_key1', 'set_key2')
print(intersection)

# 求并集
union = r.sunion('set_key1', 'set_key2')
print(union)

# 求差集
difference = r.sdiff('set_key1', 'set_key2')
print(difference)

セット6

Redis では、ZSET (順序セット) は特別なデータ構造であり、キーと値のペアのコレクションであり、それぞれが浮動小数点スコアに関連付けられています。このスコアは、要素を最小値から最大値の順に並べ替えるのに使用されます。ZSET のメンバーはユニークですが、スコアは重複する可能性があります。

順序付けられたコレクションを操作する Python Redis メソッド:

①. 要素の追加
コマンドを使用してzadd、順序付けられたコレクションに要素を追加します。構文は次のとおりです。

zadd(name, mapping)

ここでname、 はソートされたセットの名前、 はmapping追加される要素とそのスコアを示す辞書です。例えば:

redis.zadd('myzset', {'one': 1, 'two': 2, 'three': 3})

②. 要素の取得
コマンドを使用して、zrange順序付きセット内の指定された範囲内の要素を取得します。構文は次のとおりです。

zrange(name, start, end, withscores=False)

このうち、nameは順序付けされたコレクションの名前で、startそれぞれend取得対象の要素の開始位置と終了位置(0から数えて)を表し、withscores同時に要素のスコアを返すかどうかを示します。例えば:

redis.zrange('myzset', 0, -1, withscores=True)

③. 要素数の取得
コマンドを使用してzcard順序付きセット内の要素数を取得します。構文は次のとおりです。

zcard(name)

ここで、 はname順序付きセットの名前です。例えば:

redis.zcard('myzset')

④. 要素のランクを取得する
コマンドを使用して、zrank順序付きセット内の指定された要素のランクを取得します。構文は次のとおりです。

zrank(name, value)

ここで、 はnameソートされたセットの名前、 はvalueランクを取得する要素です。例えば:

redis.zrank('myzset', 'two')

⑤. 要素スコアの取得
コマンドを使用して、zscore順序付きセット内の指定された要素のスコアを取得します。構文は次のとおりです。

zscore(name, value)

ここで、 はnameソートされたセットの名前、 はvalueスコアを取得する要素です。例えば:

redis.zscore('myzset', 'two')

⑥.要素の削除コマンドを
使用して、順序付きセットから指定した要素を削除します。構文は次のとおりです。zrem

zrem(name, values)

ここで、 はnameソートされたセットの名前、 はvalues削除される要素です。例えば:

redis.zrem('myzset', 'two')

⑦. 指定されたスコア範囲内の要素を取得する
コマンドを使用して、zrangebyscore順序付きセット内の指定されたスコア範囲内の要素を取得します。構文は次のとおりです。

zrangebyscore(name, min, max, start=None, num=None, withscores=False, score_cast_func=float)

このうち、 はname順序付けられたコレクションの名前で、min取得maxするスコア範囲の最小値と最大値を表し、start取得numする要素の開始位置と数量(0から数えて)を表し、withscores返すかどうかを示します。要素は同時にスコアを取得し、score_cast_func分数の型変換関数を表します。例えば:

redis.zrangebyscore('myzset', 1, 2, withscores=True)

3、Python操作Redis

1.Redisライブラリ

Redis は、文字列、ハッシュ、リスト、セット、順序付きセットなどのさまざまなデータ構造をサポートするオープン ソースのメモリ データ構造ストレージ システムです。Redis は高速、高信頼性が特徴で、豊富なデータ構造と操作をサポートしているため、キャッシュ、メッセージ キュー、カウンター、リーダーボードなどのシナリオで広く使用されています。

Python は、学習が容易でコードが簡潔で可読性が高い高レベルのプログラミング言語であるため、Web 開発、データ分析、人工知能などの分野で広く使用されています。Python は、Redis データベースを簡単に操作できるさまざまな Redis クライアント ライブラリを提供します。

Python で Redis を操作するには、まず Redis クライアント ライブラリをインストールする必要があります。一般的に使用されるのはredis-pyredishiredisなどです。その中にはredis-py、Redis が公式に推奨する Python クライアント ライブラリがあり、Python 2 と Python 3 をサポートし、豊富な API を提供し、使いやすいです。

pip コマンドを使用して、redis-py ライブラリをインストールできます

pip install redis

インストールが完了したら、ライブラリを使用して Python で Redis データベースを操作できるようになりますredis-py簡単な例を次に示します。

import redis

# 连接Redis数据库
r = redis.Redis(host='localhost', port=6379, db=0)

# 设置键值对
r.set('name', 'Tom')

# 获取键值对
name = r.get('name')
print(name)

上記の例では、最初にredis.Redis()メソッドを使用して Redis データベースに接続し、次にr.set()メソッドを使用してキーと値のペアを設定し、r.get()メソッドを使用してキーと値のペアを取得します。このうち、hostパラメータはRedisサーバのアドレスIPportパラメータはRedisサーバのポート番号、dbパラメータはRedisデータベースの番号を指定します。パラメータが指定されていない場合はdb、デフォルトでデータベース番号 0 が使用されます。

set()およびメソッドに加えてget()redis-pyライブラリには、 、 、 、 、 、 、 、 、などincr()decr()含むhset()hget()Redislpush()データベースrpush()lrange()操作sadd()するためのさまざまなメソッドも提供されます。smembers()zadd()zrange()

Redis データベースに接続します

import redis

# 连接Redis数据库
r = redis.Redis(host='localhost', port=6379, db=0)

キーと値のペアを設定します

# 设置键值对
r.set('name', 'Tom')

キーと値のペアを取得します

# 获取键值对
name = r.get('name')
print(name)

キーと値のペアを削除します

# 删除键值对
r.delete('name')

有効期限を設定します:

# 设置过期时间
r.setex('name', 10, 'Tom')  # 10秒后过期

キーが存在するかどうかを確認します

# 判断键是否存在
if r.exists('name'):
    print('name exists')
else:
    print('name does not exist')

インクリメントとデクリメント:

# 自增
r.incr('count')
# 自减
r.decr('count')

以上がRedisライブラリの基本的な操作です

2. 文字列型に対する python-redis 操作

Redis は、さまざまなカテゴリのデータ型をサポートするメモリ内のキーと値のペアのストレージ データベースであり、そのうちの 1 つは文字列型です。文字列型は Redis の最も基本的なデータ型です。以下は、Redis で String 型を操作するための基本的な操作の一部です。

①.文字列を設定する

メソッドを使用して文字列を設定できますset()キーが存在しない場合は、新しいキーが作成され、文字列値が保存されます。キーの古い値がすでに存在する場合は、その値を上書きします。例えば:

import redis

r = redis.Redis(host='localhost', port=6379, db=0)

r.set('key', 'value')

これにより、Redis に「key」というキーが作成され、その値が「value」に設定されます。

②.文字列の取得

get() メソッドを使用して String の値を取得できます。例えば:

value = r.get('key')

これにより、「key」という名前のキーの現在の値が返されます。

③.文字列の削除

メソッドを使用してdelete()文字列を削除できます。例えば:

r.delete('key')

これにより、「key」という名前のキーが削除されます。

④. 操作文字列

Redis は、次のような文字列を操作するための他の多くのメソッドも提供します。

  • append(key, value): キーの末尾に値を追加します。
  • incr(key[, amount]): 「key」という名前のキーの値を増やします。+1 を追加するか、カスタム値の量を追加できます。
  • decr(key[, amount]): 「key」という名前のキーの値をデクリメントします。これは、-1 またはカスタム値の量だけ減らすことができます。
  • setnx(key, value): キー「key」が存在しない場合にのみ、キーの値を「value」に設定します。
  • getset(key, value): キー「key」の値を「value」に設定し、キー「key」の以前の値を返します。

たとえば、「in_stock」キーの値を 2 増やすには、次のようにします。

r.set("in_stock",10)
r.incr("in_stock",2) 
print(r.get("in_stock"))

"in_stock"キーの値が 10 から 2 増加するため、これは 12 を返します。

これらは Redis の String 型に対する基本的な操作ですが、特定のアプリケーション要件に応じて他のメソッドを選択して使用することもできます。

公式アカウントに注目:Pythonテクノロジートレーニングキャンプ、一歩ずつ高度に学びます

ゼロベース学習や上級者に適した Python リソース:

① Tencent 認定 Python 完全プロジェクト実践チュートリアル ノート PDF
② 十数社の大手メーカーの Python インタビュー トピック PDF
③ Python フルセットのビデオ チュートリアル (ゼロ基礎から上級、高度な JS リバース)
④ 数百のプロジェクト実戦 + ソース コード + ノート
⑤ プログラミング文法~機械学習~フルスタック開発~データ解析~クローラー~APPリバースエンジニアリング等プロジェクト一式+ドキュメント
⑥交流・勉強
⑦パートタイムで受注したい

次の章では、Python データベース プログラミング、MongoDB データベースについて説明します。

おすすめ

転載: blog.csdn.net/ch950401/article/details/131639970