redis-1-メモリベースの非リレーショナル・データベース|文字列タイプ|リスト・データ型
32825 ワード
文書ディレクトリRedis概要 インストール プロファイル詳細 データ型 string リストデータ型(List) pythonと対話 Redisの概要
Redisの紹介特徴及び利点 他のデータベースと比較 適用シーン redisバージョン Redis付加機能
インストール Ubuntu Windows
プロファイルの詳細プロファイルの場所 接続パスワードの設定 リモート接続を許可 リモート接続テストWindows接続UbuntuのRedisサービス
データ型汎用コマンドは、すべてのデータ型 に適用されます.
文字列タイプ(string)特徴
文字列共通コマンド-マスターする必要があります
文字列の共通コマンド-理解として
数値アクション-文字列タイプの数値(把握する必要があります)
キーの命名規則
mset wang:email [email protected]
stringコマンド要約stringデータ型注意
練習する
リストデータ型(List)特徴 リスト共通コマンド
練習する
pythonとインタラクティブモジュール(redis) Ubuntu
Windows使用フロー 汎用コマンドコード例 python操作list
Listケース:プロセスはurlの生産を担当し、プロセスはurlの消費を担当します.
プロセス1:生産者
プロセス2:消費者
プロセスモジュールを使用して実装してみますか?pythonオペレーションstring
Redisの紹介
1、 , C , ' '
2、 Key-Value NoSQL( )
3、 , strings, hashes, lists, sets, sorted sets
4、 (C C++ Python Java PHP ... )
1、MySQL : , , ,
2、MongoDB: , JSON , , ,
3、Redis ??
# IO
1、 Redis 、 , redis ,
2、 , , ,
、 , redis , , ,
# redis
1、 :5.0
2、 :2.4、2.6、2.8、3.0( )、3.2、3.4、4.0( )、5.0
3、 ( # )
RedisDesktopManager
1、
, ,
2、
,
< >
# , ,
3、
4、
5、Sentinel
インストール
#
sudo apt-get install redis-server
#
sudo /etc/init.d/redis-server status | start | stop | restart
#
redis-cli -h IP -p 6379 -a
1、
https://github.com/ServiceStack/redis-windows/blob/master/downloads/redis-64.3.0.503.zip
2、
3、
redis-server.exe
4、
redis-cli.exe
# Windows :
# : Redis
1、 redis.windows.conf redis.conf, redis
2、cmd , redis-server.exe
3、 :redis-server --service-install redis.conf --loglevel verbose
4、 - - -Redis-
#
redis-server.exe :
1、redis-server --service-uninstall
2、sc delete Redis
プロファイルの詳細
1、Ubuntu
/etc/redis/redis.conf
mysql ? : /etc/mysql/mysql.conf.d/mysqld.cnf
2、windows redis
redis.windows.conf
redis.conf
$sudo vim /etc/redis/redis.conf[500 ]
1、requirepass
2、
sudo /etc/init.d/redis-server restart
3、
redis-cli -h 127.0.0.1 -p 6379 -a 123456
127.0.0.1:6379>ping
1、 IP
69 : # bind 127.0.0.1 ::1
2、 ( yes no)
88 : protected-mode no
3、
sudo /etc/init.d/redis-server restart
# cmd
1、e:
2、cd Redis3.0
3、redis-cli -h x.x.x.x -a 123456
4、x.x.x.x:6379>ping
データ型
# (number 0-15 ,db0 ~ db15)
select number
#
keys # keys *
#
TYPE key
#
exists key
#
del key
#
rename key newkey
# ( )
flushdb
# ( )
flushall
文字列タイプ(string)
1、 、 ,
2、
文字列共通コマンド-マスターする必要があります
# 1. key-value
set key value
# 2. key
get key
# 3. key (nx)
set key value nx # not exists
# 4. (ex)
set key value ex seconds
# 5. key-value
mset key1 value1 key2 value2 key3 value3
# 6. key-value
mget key1 key2 key3
文字列の共通コマンド-理解として
# 1.
strlen key
# 2.
getrange key start stop
# 3. ,value
setrange key index value
# 4. value
append key value
数値アクション-文字列タイプの数値(把握する必要があります)
#
INCRBY key
DECRBY key
INCR key : +1
DECR key : -1
# : , INCR , DECR
# : , , append
incrbyfloat key step
キーの命名規則
mset wang:email [email protected]
127.0.0.1:6379> mset wang:email wangweichao@tedu.cn guo:email guods@tedu.cn
OK
127.0.0.1:6379> mget wang:email guo:email
1) "[email protected]"
2) "[email protected]"
127.0.0.1:6379>
stringコマンド要約
#
1、set key value
2、set key value nx
3、get key
3、mset key1 value1 key2 value2
4、mget key1 key2 key3
5、set key value nx ex seconds
6、strlen key
# ( , )
7、getset key value
#
7、incrby key
8、decrby key
9、incr key
10、decr key
11、incrbyfloat key number#( )
#
#
1、set key value ex 3
#
1、set key value
2、expire key 5 #
3、pexpire key 5 #
#
ttl key
#
persist key
# key
1、key , ,
2、 ,
#
1、 512M
練習する
1、 db0
2、 trill:username user001,
3、 trill:username
4、 trill:password 、trill:gender、trill:fansnumber ( )
5、 trill:score
6、 10
7、 2 ( )
8、 3
9、 1
10、 、 、 ...,
11、 ,
リストデータ型(List)
1、
2、 , ,
3、
4、 2^32 -1
5、 python
#
1、
LPUSH key value1 value2
2、
RPUSH key value1 value2
3、 src 1 , dst
RPOPLPUSH src dst
4、 /
LINSERT key after|before value newvalue
#
5、
LRANGE key start stop
# : LRANGE key 0 -1
6、
LLEN key
#
7、 1
LPOP key
8、 1
RPOP key
9、 , ,
BLPOP key timeout
10、 , ,
BRPOP key timeout
# BLPOP BRPOP
1、 ,
2、 0, ,
3、 , First In First Service ,
11、
LREM key count value
count>0: , value , count
count<0: , value , count
count=0: value
12、
LTRIM key start stop
LRTIM mylist1 0 2 # 3
# : 500
LTRIM weibo:comments 0 499
#
13、LSET key index newvalue
練習する
1、
2、 spider:urls RPUSH :01_baidu.com、02_taobao.com、03_sina.com、04_jd.com、05_xxx.com
3、
4、
5、 01_baidu.com 01_tmall.com
6、 04_jd.com 1 02_taobao.com
7、
8、 02_taobao.com
9、 , 3
pythonとインタラクティブ
sudo pip3 install redis
Windows
# 1. python -m pip install redis
# 2. cmd
pip install redis
import redis
#
r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')
import redis
#
r = redis.Redis(host='192.168.153.146',port=6379,db=0)
# r.keys('*') ->
key_list = r.keys('*')
for key in key_list:
print(key.decode())
# b'list'
print(r.type('mylist'))
# : 0 1
print(r.exists('spider:urls'))
# key
r.delete('mylist2')
import redis
r = redis.Redis(host='192.168.153.146',port=6379,db=0)
# pylist: ['pythonweb','socket','pybase']
r.lpush('pylist','pybase','socket','pythonweb')
# pylist: ['spider','pythonweb','socket','pybase']
r.linsert('pylist','before','pythonweb','spider')
# 4
print(r.llen('pylist'))
# [b'spider', b'pythonweb', b'socket', b'pybase']
print(r.lrange('pylist',0,-1))
# b'pybase'
print(r.rpop('pylist'))
# [b'spider', b'pythonweb']
r.ltrim('pylist',0,1)
while True:
# , None
result = r.brpop('pylist',1)
if result:
print(result)
else:
break
r.delete('pylist')
Listケース:プロセスはurlの生産を担当し、プロセスはurlの消費を担当します.
プロセス1:生産者
import redis
import time
import random
r = redis.Redis(host='192.168.153.146',port=6379,db=0)
# url
for page in range(0,67):
url = 'http://app.mi.com/category/2#page=%s' % str(page)
r.lpush('spider:urls',url)
time.sleep(random.randint(1,3))
プロセス2:消費者
import redis
r = redis.Redis(host='192.168.153.146',port=6379,db=0)
while True:
# url: (b'spider:urls',b'http://xiaomixxx')
url = r.brpop('spider:urls',5)
if url:
print(' :',url[1].decode())
else:
print(' ')
break
プロセスモジュールを使用して実装してみますか?