python:redis操作、redis移行
13984 ワード
一、データベース:
データベースはリレーショナル、非リレーショナルに分けられます(No sql)
関係型:mysql、Oracal
1.sqlでクエリーするには、各テーブル間で連絡します.
2.非リレーショナル・データベースに比べて速度が遅い
非関係型:mangoDB、redis、memcacheなど
1.sqlクエリーは適用されません
2.値の格納方法はkey=valueの形式であり、データ型は制限されません.
3.スピードが速い
redis:データはメモリに存在し、サーバのメモリサイズに応じて毎秒10万回の読み書きをサポート
欠点:サーバーが停止したり再起動したりすると、なくなります.
頻繁に適用されるデータベースはredisに置くことができ、再起動するとなくなるため、キャッシュデータベースとして一般的に使用されます.
二、redisデータベース操作:
1.redisへの接続:
stringタイプ操作
2、データの挿入
3、データを取得する:
4.データの削除
5.登録、登録練習:
(1)ユーザを登録し,ユーザ名,パスワードを入力する.パスワードには暗号文が必要です.登録後にredisに存在します.
(2)ログインして、アカウントのパスワードが存在し、正しくログインすることができます.
hashタイプ操作
1.hashタイプの構造:
データ構造:Key:key:value cnz={'cnz':{'hm':'12345','hh':'3456'},同じタイプのkeyを大きなkeyに入れることができます
2.データの挿入:
3、データの削除
4.データの取得
5.表示タイプ
#redisメモリがいっぱいになると、あまり使わないデータが自動的に削除されます
三、redis移行
# a redis ---> b redis#1.リンクa,b redis#aからすべてのkey#を取得aからkeyのvalues#setからb redisへ
転載先:https://www.cnblogs.com/hancece/p/11126662.html
データベースはリレーショナル、非リレーショナルに分けられます(No sql)
関係型:mysql、Oracal
1.sqlでクエリーするには、各テーブル間で連絡します.
2.非リレーショナル・データベースに比べて速度が遅い
非関係型:mangoDB、redis、memcacheなど
1.sqlクエリーは適用されません
2.値の格納方法はkey=valueの形式であり、データ型は制限されません.
3.スピードが速い
redis:データはメモリに存在し、サーバのメモリサイズに応じて毎秒10万回の読み書きをサポート
欠点:サーバーが停止したり再起動したりすると、なくなります.
頻繁に適用されるデータベースはredisに置くことができ、再起動するとなくなるため、キャッシュデータベースとして一般的に使用されます.
二、redisデータベース操作:
1.redisへの接続:
import redis
r=redis.Redis(host='128.14.3.40',password='HK1bc&*',db=1,decode_responses=True)#db 0 , , 。
# bytes, decode_responses=True , ,
redis string :
# TTL: , , redis ttl=-1 , , redis
stringタイプ操作
2、データの挿入
#1、 :set()
r.set('xiaoming','11') # 、 ,key,value
r.set('baibai','haha',30)# , S
r.set('hm:hmin','12346')# , 。 。 get 'hm:hmin'
r.set('hm:xiaobai','345678')
r.set('hm:xiaohei:xiao','345678') #
3、データを取得する:
print(r.get('nick')) # key , value. bytes
print(r.get('nick').decode())#
print(r.keys())# key,key
print(r.keys('xx*')) # XX *xx*: ,xx*: xx , ,*xx xx
print(r.exists('jjjj')) # key , 1, 0 ,1 ,0
4.データの削除
r.delete('key') # key , key
r.flushdb() # key
r.flushall() # key
5.登録、登録練習:
(1)ユーザを登録し,ユーザ名,パスワードを入力する.パスワードには暗号文が必要です.登録後にredisに存在します.
(2)ログインして、アカウントのパスワードが存在し、正しくログインすることができます.
import hashlib #
def reg():
#
username=inpurt(" ").strip()
password=inpurt(" ").strip()
if r.get(username): #
print(' ')
else:
m=hashlib.md5(password.encode())
new_password=m.hexdigest()
r.set(username,new_password)
print(' !')
def login():
#
username = input('username:').strip()
password = input('password:').strip()
p=r.get(username) #
if p:
m=hashlib.md5(p.encode())
new_password=m.hexdigest()
if p ==new_password:
print(' ')
else:
print(' ')
else:
print(' ')
hashタイプ操作
1.hashタイプの構造:
データ構造:Key:key:value cnz={'cnz':{'hm':'12345','hh':'3456'},同じタイプのkeyを大きなkeyに入れることができます
2.データの挿入:
r.hset('cnzUser','hanm','123456')#hset() :( key, key,value)。
r.hset('cnzUser','hn','123456') # ,
print(r.hmset('cnzUser',{'guoya':'12345','hn':'4567890'})) # key Key,value
# :
r.expire('cnzUser',60) # key , 。 string
# 。
3、データの削除
r.hdel('cnzUser','hn') # cnzUser hn key
r.delete('cnzUser') # key
4.データの取得
print(r.hget('cnzUser','hn')) # :( key, key)
print(r.hgetall('cnzUser')) # Key Key,value。
5.表示タイプ
print(r.type('cnzUser')) #type()
print(r.type('xx_:1:xiaohei'))
#redisメモリがいっぱいになると、あまり使わないデータが自動的に削除されます
三、redis移行
# a redis ---> b redis#1.リンクa,b redis#aからすべてのkey#を取得aからkeyのvalues#setからb redisへ
import redis
a = redis.Redis(host='128.14.3.220',password='HK449bc&*',
db=15,decode_responses=True) #0-16
b = redis.Redis(host='128.14.3.220',password='HK449bc&*',
db=10,decode_responses=True) #0-16
for k in a.keys(): # ,
if a.type(k)=='string':
value=a.get(k)
b.set(k,value)
elif b.type(k)=='hash':
all_data=a.hgetall(k) # Key
b.hmset(k,all_data) #
else:
print(' !')
転載先:https://www.cnblogs.com/hancece/p/11126662.html