Python存储系统(Redis)

编程之家收集整理的这篇文章主要介绍了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

简单的连接:

 1 连接方法一:
 2 每次操作都是一个连接,如get、set等,一个就是一个网络连接,所以不可取
 3  conn=redis.Redis(host="192.168.1.195",port=6379,password="rpdong")
 4 
 5 连接方法二(连接池)
 6 poolx=redis.ConnectionPool(host="192.168.1.195",password=rpdong")
 7 conn=redis.Redis(connection_pool=poolx)
 8 
 9 设置数据
10 conn.set(keyxvaluexx11 取出数据
12 print(conn.get("))

键值对操作补充:
只有键本身存在时才更改数据值和最长保留时间为10秒

设置数据,
conn.set(发布和订阅

发布

命令行发布:

参数为:publish 主题 内容

publish dongtop dongtototo

Python发布:

import redis
 2 
连接池
 4 poolx=redis.ConnectionPool(host= 5 conn=redis.Redis(connection_pool= 6 
 7 发布消息,参数(主题内容
 8 conn.publish(dongtopdongxiaodongtext 9 conn.publish(dongtop2dongxiaodongtext22210 
print(------ 发送完成  --------")

订阅

 7 
 8 pub=conn.pubsub() 打开接收
 9 pub.subscribe(") 设置接收主题
10 pub.subscribe(11 
-------- 等待接收 ---------13 
14 while True:
15   msgx=pub.parse_response() 准备接收,如果无数据则阻塞
16   '''
17   第一次会输出订阅成功消息:
18   收到的数据为: [b'subscribe',b'dongtop',1] 
19 20   #输出21   收到的数据为: [b'message',b'dongxiaodongtext']
22 23   24   收到的数据为:订阅和发布的小文件传输:

发布端

发布消息,参数(主题文件内容
conn.publish(南沙客运港.mp4rb).read())

")

接收端:

msgx =pub.parse_response()   去掉第一次订阅成功的消息
,msgx)
 True:
    msgx =pub.parse_response()   准备接收,如果无数据则阻塞
    得到文件数据并写入文件
    open(客运港.mp4wb").write(msgx[2])
    ----* 接收完成 *----")

相关文章

总结

以上是编程之家为你收集整理的Python存储系统(Redis)全部内容,希望文章能够帮你解决Python存储系统(Redis)所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

猜你在找的Python相关文章

微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误。 —— Edsger Dijkstra 目录 本节我
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 目录 本节我们来介绍闭包与装饰器。 闭包与
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 —— Nicklaus Wirth 目录 从这句话程序 = 算法 +
微信公众号:码农充电站pro 个人主页: 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 —— Joshua Bloch 目录 1,什么是计算机编码 编码 从一种形式 到另一种形式的过程,就
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了。 —— Norm Schryer 目录 前几节我们已经介绍
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 软件工程的目标是控制复杂度,而不是增加复杂性。 —— Dr. Pamela Zave 目录 我们在上
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢。 —— Roy Carlson 目录 Python 字典是另一种非常实用
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了。 —— Carig Zerouni 目录 前几节我们介