Redisの一般的な操作
10313 ワード
Redisの概要
Redisは完全にオープンソースで無料の高性能Key-Valueデータベースで、以下の特徴があります. Redisはデータの永続化をサポートし、メモリのデータをディスクに保存し、再起動して再ロードして使用することができます. Redisは、単純なKey-Valueタイプの額面データだけでなく、list、set、zset(整列集合)、hashなどのデータ構造の記憶も提供する. Redisは、データのバックアップ、すなわちmaster-slaveモードのデータバックアップをサポートします.
Redis基本操作
1、文字列関連操作
方法
説明
パラメータ
説明
例
set
値の設定
EX
キャッシュ時間/有効期限の設定
ユーザー情報の設定など、複数のフィールドを使用して値を設定します.
get
値の取得
複数のフィールドから値を取得
append
文字列の追加
mset
複数の値を追加
mget
複数の値の取得
del
削除
del
incr/decr
増加1/減少1
2、リスト関連操作
方法
説明
例
rpush
リストの右端に1つ以上の値をプッシュ
lpush
リストの左端に1つ以上の値をプッシュ
rpop
リストの最右端の要素を削除
lpop
リストの左端の要素を削除
lindex
オフセット値の問合せ
lrange
オフセット範囲の要素をクエリー
ltrim
値を切り取り、その他の値を削除
blpop
空でないリストの左端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素の出現を待つ
brpop
リストの最右端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素が現れるのを待つ
rpoplpush
ソースからリスト右端から要素を抽出して削除しdesc_に追加lsitの一番左
brpoplpush
ソースからList最右端timeout秒で要素を抽出して削除しdesc_に追加リストの一番左、source_Listが空の場合、timeout秒以内に要素のポップアップを待つ
lpushx
keyが存在する場合、リストの左端に1つ以上の値をプッシュします.そうしないと、処理は行われません.
rpushx
keyが存在する場合、リストの右端に1つ以上の値をプッシュします.そうしないと、何もしません.
3、集合関連操作
方法
説明
例
sadd/srem
コレクションに要素を追加/削除
smembers
コレクションのすべての要素を取得
sismember
エレメントがコレクションにあるかどうかを確認します
sdiff
集合が他の集合とは異なる場所を返す
sinter
いくつかの集合の交差を返します
sunion
いくつかのコレクションの並列セットを返します.
4、ハッシュ操作
方法
説明
例
hset
ハッシュ値の設定
hget
ハッシュ値の取得
hsetnx
ハッシュ値を設定し、存在する場合は設定しません.
hmset
複数のハッシュ値の設定
hmget
複数のハッシュ値の取得
hdel
ハッシュ値の削除
hkeys
すべてのkeysを取得
hvals
すべてのvaluesを取得
hlen
ハッシュに含まれるドメイン(プロパティ)の数を取得
hexists
存在するか否かを判断する
pythonオペレーションstring
pythonアクションリスト
pythonオペレーションセット
pythonオペレーションハッシュ
Redisは完全にオープンソースで無料の高性能Key-Valueデータベースで、以下の特徴があります.
Redis基本操作
1、文字列関連操作
方法
説明
パラメータ
説明
例
set
値の設定
EX
キャッシュ時間/有効期限の設定
set animal 'cat' EX 5
ユーザー情報の設定など、複数のフィールドを使用して値を設定します.
set user:Joshua;age:24 "19950427"
get
値の取得
get animal
複数のフィールドから値を取得
get user:Joshua;age:24
append
文字列の追加
append animal " Dog"
mset
複数の値を追加
mset user1 'Joshua' user2 'root'
mget
複数の値の取得
mget user1 user2 animal
del
削除
del
del animal
incr/decr
増加1/減少1
incr num\decr num #num
2、リスト関連操作
方法
説明
例
rpush
リストの右端に1つ以上の値をプッシュ
rpush mylist Joshua
lpush
リストの左端に1つ以上の値をプッシュ
lpush mylist Hello
rpop
リストの最右端の要素を削除
rpop mylist
lpop
リストの左端の要素を削除
lpop mylist
lindex
オフセット値の問合せ
lindex mylist 0
lrange
オフセット範囲の要素をクエリー
lrange mylist 0 2
ltrim
値を切り取り、その他の値を削除
ltrim mylist 0 3
blpop
空でないリストの左端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素の出現を待つ
blpop mylist 0
brpop
リストの最右端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素が現れるのを待つ
brpop mylist 0
rpoplpush
ソースからリスト右端から要素を抽出して削除しdesc_に追加lsitの一番左
rpoplpush mylist youlist
brpoplpush
ソースからList最右端timeout秒で要素を抽出して削除しdesc_に追加リストの一番左、source_Listが空の場合、timeout秒以内に要素のポップアップを待つ
brpoplpjush mylist youlist 5
lpushx
keyが存在する場合、リストの左端に1つ以上の値をプッシュします.そうしないと、処理は行われません.
lpushx itslist 0
rpushx
keyが存在する場合、リストの右端に1つ以上の値をプッシュします.そうしないと、何もしません.
3、集合関連操作
方法
説明
例
sadd/srem
コレクションに要素を追加/削除
sadd myset cat dog / srem myset cat
smembers
コレクションのすべての要素を取得
smembers myset
sismember
エレメントがコレクションにあるかどうかを確認します
sismember myset cat
sdiff
集合が他の集合とは異なる場所を返す
sdiff myset1 myset2 # myset2 myset1
sinter
いくつかの集合の交差を返します
sinter myset1 myset2
sunion
いくつかのコレクションの並列セットを返します.
sunion myset1 myset2
4、ハッシュ操作
方法
説明
例
hset
ハッシュ値の設定
hset News:1 title "News Title" # News:1 id 1 News
hget
ハッシュ値の取得
hget News:1 title
hsetnx
ハッシュ値を設定し、存在する場合は設定しません.
hsetnx News:1 title "Title"
hmset
複数のハッシュ値の設定
hmset News:1 title content "Content" is_valid 1
hmget
複数のハッシュ値の取得
hmget News:1 title content is_valid
hdel
ハッシュ値の削除
hdel News:1 title
hkeys
すべてのkeysを取得
hkeys News:1
hvals
すべてのvaluesを取得
hvals News:1
hlen
ハッシュに含まれるドメイン(プロパティ)の数を取得
hlen News:1
hexists
存在するか否かを判断する
hexists News:1 title
pythonオペレーションstring
import redis
class Test_String(object):
def __init__(self):
self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
def test_set(self):
"""
:return:
"""
res = self.r.set('user2','Joshua')
print(res)
def test_get(self):
"""
:return:
"""
res = self.r.get('user2')
print(res)
def test_mset(self):
"""
:return:
"""
d = {'user3': 'qi', 'user4': 'shuai'}
res = self.r.mset(d)
print(res)
def test_mget(self):
"""
:return:
"""
d = ['user3', 'user4']
res = self.r.mget(d)
print(res)
def test_del(self):
"""
:return:
"""
res = self.r.delete('user3')
print(res)
def test_incr(self):
"""
1
:return:
"""
res = self.r.incr('num')
print(res)
def test_decr(self):
"""
1
:return:
"""
res = self.r.decr('num')
print(res)
def test_append(self):
"""
:return:
"""
res = self.r.append('user3','qi')
print(res)
def main():
t = Test_String()
# t.test_mset()
# t.test_mget()
# t.test_del()
# t.test_set()
# t.test_get()
# t.test_incr()
# t.test_decr()
t.test_append()
if __name__ == '__main__':
main()
pythonアクションリスト
import redis
class Test_List(object):
def __init__(self):
self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
def test_push(self):
l_eat = ['Joshua', 'Amy']
lres = self.r.lpush('eat2', *l_eat)
print(lres)
rres = self.r.rpush('eat2', *l_eat)
print(rres)
def test_pop(self):
res = self.r.lpop('eat2')
print(res)
res = self.r.rpop('eat2')
print(res)
def test_lindex(self):
#
res = self.r.lindex('eat2',0)
print(res)
def test_lrange(self):
res = self.r.lrange('eat2',0,2) #
print(res)
res = self.r.lrange('eat2',0,-1) #
print(res)
def test_ltrim(self):
res = self.r.ltrim('eat2', 1,2) # ,
print(res)
res = self.r.lrange('eat2', 0, -1)
print(res)
def test_bpop(self):
res = self.r.blpop('eat2',timeout=3) # 3
print(res)
res = self.r.brpop('eat2',timeout=3) # 3
print(res)
def test_rpoplpush(self):
res = self.r.rpoplpush('mylist', 'youlist') # mylist , youlist
print(res)
def test_brpoplpush(self):
# mylist , youlist , mylist 3
res = self.r.brpoplpush('mylist', 'youlist',timeout=3)
print(res)
def test_pushx(self):
# key
res = self.r.lpushx('youlist', 1)
print(res)
# ~
res = self.r.rpushx('itslist',1)
print(res)
if __name__ == '__main__':
t = Test_List()
# t.test_push()
# t.test_pop()
# t.test_lindex()
# t.test_lrange()
# t.test_ltrim()
# t.test_blpop()
# t.test_rpoplpush()
# t.test_brpoplpush()
t.test_pushx()
pythonオペレーションセット
import redis
class Test_Set(object):
def __init__(self):
self.r = redis.StrictRedis(host='localhost',port=6379,db=0)
def test_sadd(self):
data = ['cat', 'dog']
res = self.r.sadd('zoo1', *data)
print(res)
res = self.r.smembers('zoo1') #
print(res)
def test_srem(self):
# data = ['cat', 'dog']
# res = self.r.srem('zoo', *data) #
res = self.r.srem('zoo','dog') #
print(res)
res = self.r.smembers('zoo')
print(res)
def test_sinter(self): #
res = self.r.sinter('zoo','zoo1')
print(res)
def test_sunion(self): #
res = self.r.sunion('zoo','zoo1')
print(res)
def test_sdiff(self): #
res = self.r.sdiff('zoo','zoo1')
print(res)
if __name__ == '__main__':
t = Test_Set()
# t.test_sadd()
# t.test_srem()
# t.test_sinter()
# t.test_sunion()
t.test_sdiff()
pythonオペレーションハッシュ
import redis
class Test_Hash(object):
def __init__(self):
self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
def test_hset(self): #
res = self.r.hset('News:1', 'Title', 'News Title')
print(res)
def test_hdel(self): #
res = self.r.hdel('News:1', 'Title')
print(res)
def test_hget(self): #
res = self.r.hget('News:1', 'Title')
print(res)
def test_heists(self): #
res = self.r.hexists('News:1', 'Title')
print(res)
def test_hgetall(self): #
res = self.r.hgetall('News:1')
print(res)
def test_hmset(self): #
data = {'content':'this is content', 'data':'20190101'}
res = self.r.hmset('News:1', data)
print(res)
def test_hmget(self): #
fields = ['content', 'data']
res = self.r.hmget('News:1',fields)
print(res)
def test_hkeys(self): # keys
res = self.r.hkeys('News:1')
print(res)
def test_hvalues(self): # values
res = self.r.hvals('News:1')
print(res)
def test_hlen(self): # fields
res = self.r.hlen('News:1')
print(res)
def test_hsetnx(self): # ,
res = self.r.hsetnx('News:1', 'content', 'fuck')
print(res)
if __name__ == '__main__':
t = Test_Hash()
# t.test_hset()
# t.test_hdel()
# t.test_hget()
# t.test_heists()
# t.test_hgetall()
# t.test_hmset()
# t.test_hmget()
# t.test_hkeys()
# t.test_hvalues()
# t.test_hlen()
t.test_hsetnx()