pythonredis安裝
『壹』 python怎麼測試與redis的連接
Redis服務端:192.168.100.132;port=6379
Redis客戶端:192.168.100.132
客戶端操作:
安裝python支持redis;
tar zxvf redis-2.9.1.tar.gz
cd redis-2.9.1
python setup.py install
服務端啟動redis
/root/redis-2.2.12/src/redis-server
客戶端測試:
[root@master ~]# python
>>> import redis
>>> r = redis.Redis(host='192.168.100.132',port=6379,db=0) //#如果設置了密碼,就加上password=密碼
>>> r.set('name','lansgg')
True
>>> r.get('name')
'lansgg'
>>> r.exists('name') //#看是否存在這個鍵值
True
>>> r.delete('name')
1
>>> r.dbsize() //#庫里有多少key,多少條數據
0L
>>> r.set('name','lansgg')
True
>>> r.flushdb() // #刪除當前資料庫的所有數據
True
>>> r.get('name')
>>> r.set('name','lansgg')
True
>>> r.set('wm','leo')
True
>>> r.set('tt','coffee')
True
>>> r.keys() // # 列出所有鍵值。
['tt', 'wm', 'name']
>>> r.save() // #強行把資料庫保存到硬碟。保存時阻塞
True
>>> r.dbsize()
3L
>>> dir(r)
['RESPONSE_CALLBACKS', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__mole__', '__new__', '__rece__', '__rece_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_zaggregate', 'append', 'bgrewriteaof', 'bgsave', 'bitcount', 'bitop', 'blpop', 'brpop', 'brpoplpush', 'client_getname', 'client_kill', 'client_list', 'client_setname', 'config_get', 'config_resetstat', 'config_set', 'connection_pool', 'dbsize', 'debug_object', 'decr', 'delete', 'mp', 'echo', 'eval', 'evalsha', 'execute_command', 'exists', 'expire', 'expireat', 'flushall', 'flushdb', 'from_url', 'get', 'getbit', 'getrange', 'getset', 'hdel', 'hexists', 'hget', 'hgetall', 'hincrby', 'hincrbyfloat', 'hkeys', 'hlen', 'hmget', 'hmset', 'hscan', 'hset', 'hsetnx', 'hvals', 'incr', 'incrby', 'incrbyfloat', 'info', 'keys', 'lastsave', 'lindex', 'linsert', 'llen', 'lock', 'lpop', 'lpush', 'lpushx', 'lrange', 'lrem', 'lset', 'ltrim', 'mget', 'move', 'mset', 'msetnx', 'object', 'parse_response', 'persist', 'pexpire', 'pexpireat', 'ping', 'pipeline', 'psetex', 'pttl', 'publish', 'pubsub', 'randomkey', 'register_script', 'rename', 'renamenx', 'response_callbacks', 'restore', 'rpop', 'rpoplpush', 'rpush', 'rpushx', 'sadd', 'save', 'scan', 'scard', 'script_exists', 'script_flush', 'script_kill', 'script_load', 'sdiff', 'sdiffstore', 'sentinel', 'sentinel_get_master_addr_by_name', 'sentinel_masters', 'sentinel_sentinels', 'sentinel_slaves', 'set', 'set_response_callback', 'setbit', 'setex', 'setnx', 'setrange', 'shutdown', 'sinter', 'sinterstore', 'sismember', 'slaveof', 'smembers', 'smove', 'sort', 'spop', 'srandmember', 'srem', 'sscan', 'strlen', 'substr', 'sunion', 'sunionstore', 'time', 'transaction', 'ttl', 'type', 'unwatch', 'watch', 'zadd', 'zcard', 'zcount', 'zincrby', 'zinterstore', 'zrange', 'zrangebyscore', 'zrank', 'zrem', 'zremrangebyrank', 'zremrangebyscore', 'zrevrange', 'zrevrangebyscore', 'zrevrank', 'zscan', 'zscore', 'zunionstore']
這只是一個簡單的測試,為了測試redis是否正常工作,我們安裝是否正確;
『貳』 如何在 CentOS 7 上安裝 Redis 伺服器
Redis 是一個開源的多平台數據存儲軟體,使用 ANSI C 編寫,直接在內存使用數據集,這使得它得以實現非常高的效率。Redis
支持多種編程語言,包括 Lua, C, Java, Python, Perl, PHP 和其他很多語言。redis
的代碼量很小,只有約3萬行,它只做「很少」的事,但是做的很好。盡管是在內存里工作,但是數據持久化的保存還是有的,而redis
的可靠性就很高,同時也支持集群,這些可以很好的保證你的數據安全。
構建 Redis
redis 目前沒有官方 RPM 安裝包,我們需要從源代碼編譯,而為了要編譯就需要安裝 Make 和 GCC。
如果沒有安裝過 GCC 和 Make,那麼就使用 yum 安裝。
yum install gcc make
解壓縮。
tar zxvf redis-3.0.4.tar.gz
進入解壓後的目錄。
cd redis-3.0.4
使用Make 編譯源文件。
make
安裝
進入源文件的目錄。
make
復制 Redis 的伺服器和客戶端到 /usr/local/bin。
cp redis-server redis-cli /usr/local/bin
最好也把 sentinel,benchmark 和 check 復制過去。
cp redis-sentinel redis-benchmark redis-check-aof redis-check-mp /usr/local/bin
創建redis 配置文件夾。
mkdir /etc/redis
在/var/lib/redis 下創建有效的保存數據的目錄。
mkdir -p /var/lib/redis/6379
系統參數
為了讓 redis 正常工作需要配置一些內核參數。
配置 vm.overcommit_memory 為1,這可以避免數據被截斷,詳情見此。
sysctl -w vm.overcommit_memory=1
修改 backlog 連接數的最大值超過 redis.conf 中的 tcp-backlog 值,即默認值511。你可以在 kernel.org 找到更多有關基於 sysctl 的 ip 網路隧道的信息。
sysctl -w net.core.somaxconn=512
取消對透明巨頁內存(transparent huge pages)的支持,因為這會造成 redis 使用過程產生延時和內存訪問問題。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
redis.conf
redis.conf 是 redis 的配置文件,然而你會看到這個文件的名字是 6379.conf ,而這個數字就是 redis 監聽的網路埠。如果你想要運行超過一個的 redis 實例,推薦用這樣的名字。
復制示例的 redis.conf 到 /etc/redis/6379.conf。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
現在編輯這個文件並且配置參數。
vi /etc/redis/6379.conf
daemonize
設置 daemonize 為 no,systemd 需要它運行在前台,否則 redis 會突然掛掉。
vi /etc/redis/6379.conf
pidfile
設置 pidfile 為 /var/run/redis_6379.pid。
vi /etc/redis/6379.conf
port
如果不準備用默認埠,可以修改。
port 6379
loglevel
設置日誌級別。
port 6379
logfile
修改日誌文件路徑。
logfile /var/log/redis_6379.log
dir
設置目錄為 /var/lib/redis/6379
dir /var/lib/redis/6379
安全
下面有幾個可以提高安全性的操作。
Unix sockets
在很多情況下,客戶端程序和伺服器端程序運行在同一個機器上,所以不需要監聽網路上的 socket。如果這和你的使用情況類似,你就可以使用
unix socket 替代網路 socket,為此你需要配置 port 為0,然後配置下面的選項來啟用 unix socket。
設置 unix socket 的套接字文件。
unixsocket /tmp/redis.sock
限制 socket 文件的許可權。
unixsocketperm 700
現在為了讓 redis-cli 可以訪問,應該使用 -s 參數指向該 socket 文件。
redis-cli -s /tmp/redis.sock
requirepass
你可能需要遠程訪問,如果是,那麼你應該設置密碼,這樣子每次操作之前要求輸入密碼。
requirepass "bTFBx1NYYWRMTUEyNHhsCg"
rename-command
想像一下如下指令的輸出。是的,這會輸出伺服器的配置,所以你應該在任何可能的情況下拒絕這種訪問。
CONFIG GET *
為了限制甚至禁止這條或者其他指令,可以使用 rename-command 命令。你必須提供一個命令名和替代的名字。要禁止的話,需要設置替代的名字為空字元串,這樣禁止任何人猜測命令的名字會比較安全。
rename-command FLUSHDB "FLUSHDB_MY_SALT_G0ES_HERE09u09u" rename-command FLUSHALL "" rename-command CONFIG "CONFIG_MY_S4LT_GO3S_HERE09u09u"
使用密碼通過 unix socket 訪問,和修改命令
快照
默認情況下,redis 會周期性的將數據集轉儲到我們設置的目錄下的 mp.rdb 文件。你可以使用 save 命令配置轉儲的頻率,它的第一個參數是以秒為單位的時間幀,第二個參數是在數據文件上進行修改的數量。
每隔15分鍾並且最少修改過一次鍵。
save 900 1
每隔5分鍾並且最少修改過10次鍵。
save 300 10
每隔1分鍾並且最少修改過10000次鍵。
save 60 10000
文件 /var/lib/redis/6379/mp.rdb 包含了從上次保存以來內存里數據集的轉儲數據。因為它先創建臨時文件,然後替換之前的轉儲文件,這里不存在數據破壞的問題,你不用擔心,可以直接復制這個文件。
開機時啟動
你可以使用 systemd 將 redis 添加到系統開機啟動列表。
復制示例的 init_script 文件到 /etc/init.d,注意腳本名所代表的埠號。
cp utils/redis_init_script /etc/init.d/redis_6379
現在我們要使用 systemd,所以在 /etc/systems/system 下創建一個單位文件名字為 redis_6379.service。
vi /etc/systemd/system/redis_6379.service
填寫下面的內容,詳情可見 systemd.service。
[Unit] Description=Redis on port 6379 [Service] Type=forking ExecStart=/etc/init.d/redis_6379 start ExecStop=/etc/init.d/redis_6379 stop [Install] WantedBy=multi-user.target
現在,添加我之前在 /etc/sysctl.conf 裡面修改過的內存過量使用和 backlog 最大值的選項。
vm.overcommit_memory = 1 net.core.somaxconn=512
對於透明巨頁內存支持,並沒有直接 sysctl 命令可以控制,所以需要將下面的命令放到 /etc/rc.local 的結尾。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
『叄』 redis 一個資料庫能存多少數據
redis一個實例能存一個key或是value大小最大是512M。操作方法如下:
1、首先要安裝redis,開啟redis的服務。
『肆』 scrapy-redis到底需要怎樣部署啊分別應該安裝什麼軟體
酷辣蟲 CoLaBug
綜合技術
Scrapy-redis分布式爬蟲+Docker快速部署
簡書 簡書 2018-07-28 本文共6495個字,預計閱讀需要17分鍾。
生成海報
微信掃一掃,分享到朋友圈
Scrapy-redis分布式爬蟲+Docker快速部署
0 0
Scrapy-redis分布式爬蟲+Docker快速部署
打算爬一個網站的數據,量比較大, url 鏈接從0開始達到2億,剛開始用 request 遞歸寫了個爬蟲,發現速度低的可憐,不算任何的錯誤,也只能達到.5秒一個請求,這速度實在不能忍,所以想著用分布式爬蟲,所以才有了這篇文章
開發環境+框架、庫
開發環境:
macOS High Sierra 10.13
Python3.5
開發工具:
PyCharm
Python庫: pymysql 、 scrapy 、 scrapy-redis 、 requests 、 BeautifulSoup4 、 redis-py
運行環境: Centos7.4 Centos6.9 Docker
開始搭建環境
安裝 Python3 Windows請自行查找教程安裝、Mac用戶系統自帶了 Py2.6 ,我建議升級到 Python3 ,用 HomeBrew 安裝即可
Homebrew安裝命令
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然後使用 brew install python 安裝 Python3
安裝成功後再終端輸入 python3 查看是否安裝成功,如果輸入 python 默認使用本機的 py2 ,當然也可以去配置文件設置個 alias 將 python 設置成啟動 py3
image
如圖安裝成功
然後用
easy_install pip 安裝
Python 的包管理工具
pip
注意:有的人用的是 Anaconda 作為 py 環境,我剛開始也是用的 Anaconda ,但是在 install scrapy-redis 的時候發現無法導入,默認源都沒有這個庫,
『伍』 python中我安裝了redis模塊 但是在文件中import redis 發現找不到該文件, 這個怎麼解決!
可以從 pycharm 裡面安裝
『陸』 python中redis服務怎麼起
redis-py提供兩個類Redis和StrictRedis用於實現Redis的命令,StrictRedis用於實現大部分官方的命令,
並使用官方的語法和命令,Redis是StrictRedis的子類,用於向後兼容舊版本的redis-py。
import redis 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存資料庫
r = redis.Redis(host='192.168.19.130', port=6379) host是redis主機,需要redis服務端和客戶端都起著 redis默認埠是6379
r.set('foo', 'Bar') key是"foo" value是"bar" 將鍵值對存入redis緩存
print r.get('foo') Bar 取出鍵foo對應的值!
『柒』 python2.7安裝rediscluster模塊報錯,求助
1如果是在windows上請下載PYTHON2.6的安裝程序,然後直接運行即可安裝完成。2安裝完成後需要到系統的環境變數處設置PYTHON的環境變數具體設置方法如圖3在命令行鍵入python遍可以進入PYTHON的交互編程界面。如果需要在LINUX上安裝以CENTO
『捌』 Mac下pip安裝redis 默認路徑在哪裡
根據系統不同: Windows是python目錄下Lib\site-packages\; Linux是/usr/local/lib/python/dist-packages/。
『玖』 python爬蟲需要安裝哪些庫
一、 請求庫
1. requests
requests 類庫是第三方庫,比 Python 自帶的 urllib 類庫使用方便和
2. selenium
利用它執行瀏覽器動作,模擬操作。
3. chromedriver
安裝chromedriver來驅動chrome。
4. aiohttp
aiohttp是非同步請求庫,抓取數據時可以提升效率。
二、 解析庫
1. lxml
lxml是Python的一個解析庫,支持解析HTML和XML,支持XPath的解析方式,而且解析效率非常高。
2. beautifulsoup4
Beautiful Soup可以使用它更方便的從 HTML 文檔中提取數據。
3. pyquery
pyquery是一個網頁解析庫,採用類似jquery的語法來解析HTML文檔。
三、 存儲庫
1. mysql
2. mongodb
3. redis
四、 爬蟲框架scrapy
Scrapy 是一套非同步處理框架,純python實現的爬蟲框架,用來抓取網頁內容以及各種圖片
需要先安裝scrapy基本依賴庫,比如lxml、pyOpenSSL、Twisted