Python存储系统(Redis)
存储系统数据缓存一般会使用三个模块:Mongodb,redis,memcache。其中memcache是轻量级缓存,只能将数据保存到内存中,redis可以配置数据保存在内存还是硬盘。
其主要用途有:不同应用(语言)中共享数据
CentOS安装Redis
安装
yum install epel-release
yum install redis
开启服务:
systemctl start redis
设置密码:
编辑文件:/etc/redis.conf
#requirepass foobared去掉注释,foobared改为自己的密码
requirepass newpasswd #这句表示该密码为newpasswd
保存并重启redis服务
设置密码后的命令行登入方式:redis-cli -h 127.0.0.1 -p 6379 -a newpasswd
设置远程端可访问:
因为redis服务默认不提供远程操作
编辑文件:/etc/redis.conf
将bind 127.0.0.1 改为 bind 0.0.0.0
保存并重启redis服务
设置防火墙开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
systemctl restart firewalld
命令行基本操作操作
连接
redis-cli
通过键值对设置值
set key value [EX seconds] [PX milliseconds] [NX|XX]
其中ex表示保存的秒数,px表示毫秒数,nx表示key不存在时才操作,xx表示key存在时才操作
set keyx valuex
设置值且保存5秒
set keyx1 valuex1 ex 5
一次性设置多个
mset key1 value1 key2 value2
设置新值并返回原值
getset key1 value1111
字符串切片,如"value1"经过下面结果为:"val"
getrange key1 0 2
退出
exit
通过键值对获取值
get keyx
查看所有的键
keys *
查看带有e字符的所有key
keys *e*
一次性获取多个
mget key1 key2
通过键值对删除值
del key [key ...]
判断键是否存在,返回0或1
exists key1
重命名
rename key1 key2
跳转到另一个空间(db)
总共有[0,15]个,默认为0
select 1
移动键值内容
move key db
自增自减
自增:
incr keycunx #执行一次增加一
自减
decr keycunx #执行一次减去一
二进制位操作:
如果把设置值的offset匹配成用户id,则可以实现高效的用户登入判断,设置1为登入,0为非登入
设置值:
setbit key offset value 设置二进制offset位的值为value
setbit dongbit 2 1
setbit dongbit 1000 1
取出值为1的位个数:
bitcount dongbit #输出2
获取二进制第几位的值:
getbit dongbit 10 #输出0
getbit dongbit 2 #输出1
Hash操作:
设置数据
hset key field value 其中key总键,field为子键,value为子键的值
hset user name dongxiaodong
hset user passwd pdongdongdong
获取到所有数据:
hgetall user
hkeys user
hvals user
获取到指定数据:
hget user passwd
批量设置:
hmset user1 name dong1 passwd pdong111
判断子键是否存在,存在返回1,否则为0
hexists user1 passwd
列表操作:
设置
rpush key value [value ...] #一个key可以保持多个value,先入先出,如果需要先入后出则使用rpush
rpush listdong dong1 dong2 dong3
取值:
lrange key start stop 取key的值需要确定起始和结束位置
lrange listdong 0 -1 #取所有
lrange listdong 1 1 #确定某个
集合操作(值不可重复):
设置
sadd aggdong dong1 dong2 33 dong1
取值
smembers aggdong
获取个值数
scard aggdong
Python基本操作
安装模块
pip3 install redis
简单的连接:
#连接方法一:
#每次操作都是一个连接,如get、set等,一个就是一个网络连接,所以不可取
# conn=redis.Redis(host="192.168.1.195",port=6379,password="rpdong") #连接方法二(连接池)
poolx=redis.ConnectionPool(host="192.168.1.195",port=6379,password="rpdong")
conn=redis.Redis(connection_pool=poolx) #设置数据
conn.set("keyx","valuexx")
#取出数据
print(conn.get("keyx"))
键值对操作补充:
只有键本身存在时才更改数据值和最长保留时间为10秒
#设置数据,
conn.set("keyx","valuexx",ex=10,xx=True)
发布和订阅:
发布
命令行发布:
参数为:publish 主题 内容
publish dongtop dongtototo
Python发布:
import redis #连接池
poolx=redis.ConnectionPool(host="192.168.1.195",port=6379,password="rpdong")
conn=redis.Redis(connection_pool=poolx) #发布消息,参数(主题,内容)
conn.publish("dongtop","dongxiaodongtext")
conn.publish("dongtop2","dongxiaodongtext222") print("------ 发送完成 --------")
订阅:
import redis #连接池
poolx=redis.ConnectionPool(host="192.168.1.195",port=6379,password="rpdong")
conn=redis.Redis(connection_pool=poolx) pub=conn.pubsub() #打开接收
pub.subscribe("dongtop") #设置接收主题
pub.subscribe("dongtop2") print("-------- 等待接收 ---------") while True:
msgx=pub.parse_response() #准备接收,如果无数据则阻塞
'''
第一次会输出订阅成功消息:
收到的数据为: [b'subscribe', b'dongtop', 1]
收到的数据为: [b'subscribe', b'dongtop2', 2]
#输出:
收到的数据为: [b'message', b'dongtop', b'dongxiaodongtext']
收到的数据为: [b'message', b'dongtop2', b'dongxiaodongtext222'
'''
print("收到的数据为:",msg
基于订阅和发布的小文件传输:
发布端
#发布消息,参数(主题,文件内容)
conn.publish("dongtop",open("南沙客运港.mp4","rb").read()) print("------ 发送完成 --------")
接收端:
msgx =pub.parse_response() # 去掉第一次订阅成功的消息
print("-------- 等待接收 ---------",msgx)
while True:
msgx =pub.parse_response() # 准备接收,如果无数据则阻塞
#得到文件数据并写入文件
open("客运港.mp4","wb").write(msgx[2])
print("----* 接收完成 *----")
Python存储系统(Redis)的更多相关文章
- python之redis和memcache操作
Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...
- python——操作Redis
在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...
- 【python】Redis介绍及简单使用
一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...
- python之 Redis
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- python 实现redis订阅发布功能
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- python之redis模块
一.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...
- Python操作Redis(一)
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- Python操作Redis、Memcache
今天主要介绍如何通过python来对Redis和memcache进行操作,下面开始今天的内容: 一.Memcached操作 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web ...
- Redis - Python操作Redis
目录 Python操作Redis 一. Redis安装和基本使用 二. Python操作Redis API使用 1.操作模式 2.连接池 3.Django配置Redis 4.操作 Python操作Re ...
- python中redis
一.简介 二.redis的安装和使用 三.python操作readis之安装和支持存储类型 四.python操作redis值普通链接 五.python操作redis值连接池 六.操作之String操作 ...
随机推荐
- LeetCode Javascript实现 258. Add Digits 104. Maximum Depth of Binary Tree 226. Invert Binary Tree
258. Add Digits Digit root 数根问题 /** * @param {number} num * @return {number} */ var addDigits = func ...
- 33.APP后端处理视频的方案
在当前的app应用中,到处都能看到视频的身影,例如,在社交类的app上,用户可以拍摄属于自己的小视频,并发布到相应得栏目,增加和好友们互动的机会. 后台常见的视频处理有以下几种: · ...
- easyui下载包详解
easyui包详解: 文件夹: demo--该目录下存放的是 EasyUI PC 版各插件的示例示例.如果不想在官网上查看演示,可以在该目录下找到相应的演示示例 demo-mobile--该目录下存放 ...
- VMware12下CentOS 7安装教程
CentOS 7 DVD安装光盘(百度搜索CentOS即可找到官方主页):VMware Workstation 12 Pro及以上软件: 启动VMware Workstation 12 Pro程序,在 ...
- Java 学习笔记 (三) Java 日期类型
以下内容摘自: https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...
- 转载:selenium的wait.until()
package com.test.elementwait; import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;imp ...
- freemarker导出word文档
使用freemarker导出word文档的过程 **************************************************************************** ...
- ThreadPoolExecutor简介
ThreadPoolExecutor简介 并发包中提供的一个线程池服务 23456789 public ThreadPoolExecutor(int corePoolSize,//线程池维护线程的最少 ...
- loj548 「LibreOJ β Round #7」某少女附中的体育课
这道题好神啊!!! 发现这题就是定义了一种新的卷积,然后做k+1次卷积. 这里我们就考虑构造一个变换T,使得$T(a) \cdot T(b) =T(a∘b)$,这里是让向量右乘这个转移矩阵. 于是我们 ...
- BZOJ_4818_[Sdoi2017]序列计数_矩阵乘法
BZOJ_4818_[Sdoi2017]序列计数_矩阵乘法 Description Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望 ...