文档章节

Python存储系统(Redis)

o
 osc_gu9d45li
发布于 2019/04/07 18:02
字数 1249
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

存储系统数据缓存一般会使用三个模块: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",port=6379,password="rpdong")
 7 conn=redis.Redis(connection_pool=poolx)
 8 
 9 #设置数据
10 conn.set("keyx","valuexx")
11 #取出数据
12 print(conn.get("keyx"))

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

#设置数据,
conn.set("keyx","valuexx",ex=10,xx=True)

发布和订阅:

发布

命令行发布:

参数为:publish 主题 内容

publish dongtop dongtototo

Python发布:

 1 import redis
 2 
 3 #连接池
 4 poolx=redis.ConnectionPool(host="192.168.1.195",port=6379,password="rpdong")
 5 conn=redis.Redis(connection_pool=poolx)
 6 
 7 #发布消息,参数(主题,内容)
 8 conn.publish("dongtop","dongxiaodongtext")
 9 conn.publish("dongtop2","dongxiaodongtext222")
10 
11 print("------ 发送完成  --------")

订阅:

 1 import redis
 2 
 3 #连接池
 4 poolx=redis.ConnectionPool(host="192.168.1.195",port=6379,password="rpdong")
 5 conn=redis.Redis(connection_pool=poolx)
 6 
 7 
 8 pub=conn.pubsub() #打开接收
 9 pub.subscribe("dongtop") #设置接收主题
10 pub.subscribe("dongtop2")
11 
12 print("-------- 等待接收 ---------")
13 
14 while True:
15   msgx=pub.parse_response() #准备接收,如果无数据则阻塞
16   '''
17   第一次会输出订阅成功消息:
18   收到的数据为: [b'subscribe', b'dongtop', 1] 
19   收到的数据为: [b'subscribe', b'dongtop2', 2]
20   #输出:
21   收到的数据为: [b'message', b'dongtop', b'dongxiaodongtext']
22   收到的数据为: [b'message', b'dongtop2', b'dongxiaodongtext222'
23   '''
24   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("----* 接收完成 *----")
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
初识Redis及Redis在Windows下的安装和使用

NoSQL简介 介绍redis前,我想还是先认识下NoSQL,即not only sql, 是一种非关系型的数据存储,key/value键值对存储。现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo C...

小运
2014/03/23
32
0
初识Redis及Redis在Windows下的安装和使用

NoSQL简介 介绍redis前,我想还是先认识下NoSQL,即not only sql, 是一种非关系型的数据存储,key/value键值对存储。现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo C...

zhoujie0111
2013/05/19
0
0
初识Redis及Redis在Windows下的安装和使用

NoSQL简介 介绍redis前,我想还是先认识下NoSQL,即not only sql, 是一种非关系型的数据存储,key/value键值对存储。现有Nosql DB 产品: Redis/MongoDB/Memcached/Hbase/Cassandra/ Tokyo C...

小运
2014/03/23
33
0
Redis服务监控之RedisLive安装部署(亲测可用)

一、Redis服务安装部署 1、redis安装(linux系统) 下载 https://redis.io/ 安装依赖 yum install gcc tcl 解压、编译、安装(make & make install PREFIX=/opt/redis) Copy源码包中的redis...

osc_jor8x3el
2019/05/23
2
0
python 全栈之路

[TOC] Python 全栈之路 一. Python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 Python2,Python3 Python 开启入坑之路 Python 基本数据类型 Python 那些零碎的知识点...

osc_bnuaa5jy
2019/01/30
1
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
40分钟前
31
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
8
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
43分钟前
18
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
今天
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部