




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發技術】PythonRedis數據處理的方法
本篇內容主要講解“PythonRedis數據處理的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓在下來帶大家學習“PythonRedis數據處理的方法”吧!Redis:RemoteDictionaryServer,即:遠程字典服務,Redis底層使用C語言編寫,是一款開源的、基于內存的
NoSql數據庫由于Redis性能遠超其他數據庫,并且支持集群、分布式及主從同步等優勢,所以經常用于
緩存數據、高速讀寫
等場景我們以在云服務器Centos7.8
安裝Redis-Server為例首先,安裝在云服務器上Redis數據庫#
下載epel倉庫
yum
install
epel-release
#
安裝redis
yum
install
redis然后,通過vim命令修改Redis配置文件,打開遠程連接,設置連接密碼配置文件目錄:/etc/redis.confbind更改為,容許外網訪問requirepass設置一個訪問密碼#
vim
/etc/redis.conf
#
1、bing從修改為:,開放遠程連接
bind
#
2、設置密碼
requirepass
123456需要指出的是,為了保證云服務器數據安全,Redis開放遠程訪問的時候,一定要加強密碼接著,啟動Redis服務,開啟防火墻和端口,配置云服務器安全組默認情況下,Redis服務使用的端口號是
6379另外,需要在云服務器安全組進行配置,保證Redis數據庫能正常連接#
啟動Redis服務,默認redis端口號是6379
systemctl
start
redis
#
打開防火墻
systemctl
start
firewalld.service
#
開放6379端口
firewall-cmd
--zone=public
--add-port=6379/tcp
--permanent
#
配置立即生效
firewall-cmd
--reload完成以上操作,我們就可以通過Redis-CLI或Redis客戶端工具進行連接了最后,要使用Python操作
Redis,我們需要使用pip安裝一個依賴#
安裝依賴,便于操作redis
pip3
install
redis在操作Redis中的數據之前,我們需要利用
Host、端口號、密碼實例化一個Redis連接對象from
redis
import
Redis
class
RedisF(object):
def
__init__(self):
#
實例化Redis對象
#
decode_responses=True,如果不加則寫入的為字節類型
#
host:遠程連接地址
#
port:Redis端口號
#
password:Redis授權密碼
self.redis_obj
=
Redis(host='139.199.**.**',port=6379,password='123456',decode_responses=True,charset='UTF-8',
encoding='UTF-8')接下來我們以操作字符串、列表、set集合、zset集合、哈希表、事務為例,講講Python操作這些數據的方法1、字符串操作操作字符串有兩種方式,操作方法分別是:set()
和
mset()其中:set()一次只能保存一個值,參數意義如下name:key,代表鍵value:value,待保存的值ex:過期時間,以秒為單位,如果不設置,則永久不過期;否則,過期則刪除px:過期時間,以毫秒為單位nx/xx:set操作是否執行與name鍵是否存在有關獲取值和刪除值的操作方法分別為:get(Key)、
delete(KeyorKeys)#
set():單字符串操作
#
添加一個值,并設置超時時間為120s
self.redis_obj.set('name',
'airpython',
ex=120)
#
get():獲取這個值
print(self.redis_obj.get('name'))
#
delete():刪除一個值或多個值
self.redis_obj.delete('name')
print(self.redis_obj.get('name'))對于多值數據的設置,只需要調用mset()方法,將待插入的數據以鍵值對組成一個字典作為參數即可同理,Redis提供了
mget()方法,可以一次獲取多個鍵的值#
mset():設置多個值
self.redis_obj.mset({"foo":
"foo1",
"zoo":
"zoo1"})
#
mget():獲取多個值
result
=
self.redis_obj.mget("foo",
"zoo")
print(result)2、列表操作Redis提供了很多方法用于操作列表,其中比較常見的如下:lpush/rpush:將一個值或多個值插入到列表頭部或尾部,其中,lpush代表頭部插入;rpush代表尾部插入數據lset:通過索引,將值插入到列表對應的位置linsert:在列表元素前面或后面插入數據lindex:通過索引獲取列表中的某一個元素,其中,0代表第一個元素;-1代表最后一個元素lrange:通過制定起始位置和結束位置,從列表中獲取指定區域的值llen:獲取列表的長度,如果Key對應的列表不存在,返回0lpop:移除并返回列表中的第一個元素rpop:移除并返回列表中的最后一個元素實例代碼如下:def
manage_list(self):
"""
操作列表
:return:
"""
#
1、新增一個列表,并左邊插入一個數據
#
注意:可以一次加入多個元素,也可以一個個元素的加入
self.redis_obj.lpush('company',
'阿里',
'騰訊',
'百度')
#
2、移除第一個元素
self.redis_obj.lpop("company")
#
3、右邊插入數據
self.redis_obj.rpush('company',
'字節跳動',
'小米')
#
4、移除最后一個元素
self.redis_obj.rpop("company")
#
5、獲取列表的長度
self.redis_obj.llen("company")
#
6、通過索引,獲取列表中的某一個元素(第二個元素)
print('列表中第二個元素是:',
self.redis_obj.lindex("company",
1))
#
7、根據范圍,查看列表中所有的值
print(self.redis_obj.lrange('company',
0,
-1))3、操作Set
集合Set是一個無序的元素集合,集合中的元素不能重復,Redis同樣提供了很多方法,便于操作Set集合其中,比較常用的方法如下:sadd:添加元素到集合中,已經存在集合中的元素將被忽略,如果集合不存在,則新建一個集合scard:返回集合元素的數量smembers:返回集合中所有元素srem:移除集合中一個或多個元素,如果元素不存在則忽略sinter:返回兩個集合的交集,結果依然是一個集合sunion:返回兩個集合的并集sdiff:以第一個集合參數為標準,返回兩個集合的差集sunionstore:計算兩個集合的并集,保存到一個新的集合中sismember:判斷集合中是否存在某個元素spop:隨機刪除集合中的一個元素,并返回具體實例代碼如下:def
manage_set(self):
"""
操作set集合
:return:
"""
self.redis_obj.delete("fruit")
#
1、sadd:新增元素到集合中
#
添加一個元素:香蕉
self.redis_obj.sadd('fruit',
'香蕉')
#
再添加兩個元素
self.redis_obj.sadd('fruit',
'蘋果',
'桔子')
#
2、集合元素的數量
print('集合元素數量:',
self.redis_obj.scard('fruit'))
#
3、移除一個元素
self.redis_obj.srem("fruit",
"桔子")
#
再定義一個集合
self.redis_obj.sadd("fruit_other",
"香蕉",
"葡萄",
"柚子")
#
4、獲取兩個集合的交集
result
=
self.redis_obj.sinter("fruit",
"fruit_other")
print(type(result))
print('交集為:',
result)
#
5、獲取兩個集合的并集
result
=
self.redis_obj.sunion("fruit",
"fruit_other")
print(type(result))
print('并集為:',
result)
#
6、差集,以第一個集合為標準
result
=
self.redis_obj.sdiff("fruit",
"fruit_other")
print(type(result))
print('差集為:',
result)
#
7、合并保存到新的集合中
self.redis_obj.sunionstore("fruit_new",
"fruit",
"fruit_other")
print('新的集合為:',
self.redis_obj.smembers('fruit_new'))
#
8、判斷元素是否存在集合中
result
=
self.redis_obj.sismember("fruit",
"蘋果")
print('蘋果是否存在于集合中',
result)
#
9、隨機從集合中刪除一個元素,然后返回
result
=
self.redis_obj.spop("fruit")
print('刪除的元素是:',
result)
#
3、集合中所有元素
result
=
self.redis_obj.smembers('fruit')
print("最后fruit集合包含的元素是:",
result)4、操作zset集合zset集合相比普通set集合,是有序的,zset集合中的元素包含:值和分數,其中分數用于排序其中,比較常用的方法如下:zadd:往集合中新增元素,如果集合不存在,則新建一個集合,然后再插入數據zrange:通過起始點和結束點,返回集合中的元素值(不包含分數);如果設置withscores=True,則返回結果會帶上分數zscore:獲取某一個元素對應的分數zcard:獲取集合中元素個數zrank:獲取元素在集合中的索引zrem:刪除集合中的元素zcount:通過最小值和最大值,判斷分數在這個范圍內的元素個數實踐代碼如下:def
manage_zset(self):
"""
操作zset集合
:return:
"""
self.redis_obj.delete("fruit")
#
往集合中新增元素:zadd()
#
三個元素分別是:"banana",
1/"apple",
2/"pear",
3
self.redis_obj.zadd("fruit",
"banana",
1,
"apple",
2,
"pear",
3)
#
查看集合中所有元素(不帶分數)
result
=
self.redis_obj.zrange("fruit",
0,
-1)
#
['banana',
'apple',
'pear']
print('集合中的元素(不帶分數)有:',
result)
#
查看集合中所有元素(帶分數)
result
=
self.redis_obj.zrange("fruit",
0,
-1,
withscores=True)
#
[('banana',
1.0),
('apple',
2.0),
('pear',
3.0)]
print('集合中的元素(帶分數)有:',
result)
#
獲取集合中某一個元素的分數
result
=
self.redis_obj.zscore("fruit",
"apple")
print("apple對應的分數為:",
result)
#
通過最小值和最大值,判斷分數在這個范圍內的元素個數
result
=
self.redis_obj.zcount("fruit",
1,
2)
print("集合中分數大于1,小于2的元素個數有:",
result)
#
獲取集合中元素個數
count
=
self.redis_obj.zcard("fruit")
print('集合元素格式:',
count)
#
獲取元素的值獲取索引號
index
=
self.redis_obj.zrank("fruit",
"apple")
print('apple元素的索引為:',
index)
#
刪除集合中的元素:zrem
self.redis_obj.zrem("fruit",
"apple")
print('刪除apple元素后,剩余元素為:',
self.redis_obj.zrange("fruit",
0,
-1))4、操作哈希哈希表中包含很多鍵值對,并且每一個鍵都是唯一的Redis操作哈希表,下面這些方法比較常用:hset:往哈希表中添加一個鍵值對值hmset:往哈希表中添加多個鍵值對值hget:獲取哈希表中單個鍵的值hmget:獲取哈希表中多個鍵的值列表hgetall:獲取哈希表中種所有的鍵值對hkeys:獲取哈希表中所有的鍵列表hvals:獲取哈表表中所有的值列表hexists:判斷哈希表中,某個鍵是否存在hdel:刪除哈希表中某一個鍵值對hlen:返回哈希表中鍵值對個數對應的操作代碼如下:def
manage_hash(self):
"""
操作哈希表
哈希:一個鍵對應一個值,并且鍵不容許重復
:return:
"""
self.redis_obj.delete("website")
#
1、新建一個key為website的哈希表
#
往里面加入數據:baidu(field),(value)
self.redis_obj.hset('website',
'baidu',
'')
self.redis_obj.hset('website',
'google',
'')
#
2、往哈希表中添加多個鍵值對
self.redis_obj.hmset("website",
{"tencent":
"",
"alibaba":
""})
#
3、獲取某一個鍵的值
result
=
self.redis_obj.hget("website",
'baidu')
print("鍵為baidu的值為:",
result)
#
4、獲取多個鍵的值
result
=
self.redis_obj.hmget("website",
"baidu",
"alibaba")
print("多個鍵的值為:",
result)
#
5、查看hash表中的所有值
result
=
self.redis_obj.hgetall('website')
print("哈希表中所有的鍵值對為:",
result)
#
6、哈希表中所有鍵列表
#
['baidu',
'google',
'tencent',
'alibaba']
result
=
self.redis_obj.hkeys("website")
print("哈希表,所有的鍵(列表)為:",
result)
#
7、哈希表中所有的值列表
#
['',
'',
'',
'']
result
=
self.redis_obj.hvals("website")
print("哈希表,所有的值(列表)為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南轉椅項目可行性研究報告范文參考
- 政府采購合同標準文本7篇
- 2025年正式勞動合同10篇
- 珠寶供應鏈合作協議合同
- 白酒包裝購買合同協議
- 甲醇加注站施工合同協議
- 瑜伽館開單合同協議
- 2025包機運輸合同8篇
- 特許連鎖經營合同協議
- 現金贊助合同協議模板
- 國家開放大學《傳感器與測試技術》實驗參考答案
- NY∕T 3349-2021 畜禽屠宰加工人員崗位技能要求
- 危害分析與關鍵控制點HACCP課件
- 垃圾清運記錄表
- 人防工程施工質量控制課件
- 防災減災科普知識答題及答案
- 房建技術員施工員考試參考題庫(含各題型)
- 新款h2夜視移動電源
- 2020年老年科護士分層次培訓計劃
- 天津大學年《巖體力學》期末試題及答案
- 成果報告書(模板)
評論
0/150
提交評論