python连接redis,mongodb以及简单命令使用
redis
环境如下:
[root@mcw01 ~/msRedis]$ ps -ef|grep -v grep|grep redis
root 46061 1 0 14:28 ? 00:00:45 redis-sentinel *:26379 [sentinel]
root 46066 1 0 14:28 ? 00:00:44 redis-sentinel *:26380 [sentinel]
root 46071 1 0 14:28 ? 00:00:44 redis-sentinel *:26381 [sentinel]
root 46293 1 0 15:17 ? 00:00:14 redis-server *:7000 [cluster]
root 46298 1 0 15:18 ? 00:00:14 redis-server *:7001 [cluster]
root 46303 1 0 15:18 ? 00:00:13 redis-server *:7002 [cluster]
root 46308 1 0 15:18 ? 00:00:13 redis-server *:7003 [cluster]
root 46313 1 0 15:18 ? 00:00:13 redis-server *:7004 [cluster]
root 46318 1 0 15:18 ? 00:00:14 redis-server *:7005 [cluster]
root 54613 1 0 18:57 ? 00:00:00 redis-server *:6380
root 54620 1 0 18:57 ? 00:00:00 redis-server *:6381
[root@mcw01 ~/msRedis]$
[root@mcw01 ~/msRedis]$ redis-cli -p 6381 info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=50805,lag=1
master_replid:e795be2a39f50a18c95c77196bcb56780a062113
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:50933
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:50933
[root@mcw01 ~/msRedis]$
[root@mcw01 ~/msRedis]$
[root@mcw01 ~/msRedis]$ redis-cli -p 6381
127.0.0.1:6381> keys *
1) "name1"
127.0.0.1:6381>
[root@mcw01 ~/msRedis]$
安装了redis模块。
from redis import Redis
redis_cli= Redis(host="10.0.0.11",port=6381)
res=redis_cli.get("name1")
print(res)
连接报错:
redis.exceptions.ResponseError: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
查看redis配置如下:
[root@mcw01 ~/msRedis]$ cat 6381.conf
port 6381
daemonize yes
pidfile "/data/6381/redis.pid"
loglevel notice
logfile "/data/6381/redis.log"
dbfilename "dump.rdb"
dir "/data/6381" [root@mcw01 ~/msRedis]$
添加bind ip
[root@mcw01 ~/msRedis]$ cat 6379.conf
bind 10.0.0.11
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379
重新启动后,就可以正常连接

查看redis服务

设置一个值:

查看,添加数据成功


from redis import Redis
import json
redis_cli= Redis(host="10.0.0.11",port=6379)
res1=redis_cli.hset('stu1','name','mcw')
res2=redis_cli.hset('stu2','mcw2',json.dumps({'name':'mcw','age':'18','gender':'man'}))
res3=redis_cli.hmset('stu3',{'name':'mcw','age':'18','gender':'man'})
student={
'xiaoma':json.dumps({
'name':'xiaoma',
'age':18,
'hobby:':['football','sing','jump'],
'jiaren':{
'爷爷':{
'name':'马有才',
'hobby':['xiangqi','paobu']
}
}
}),
'xiaohong':json.dumps({
'name':'xiaohong'
})
}
res4=redis_cli.hmset('student_info',student)
print(res1,res2,res3,res4)
刚刚插入的数据

如下图,用程序获取出来的话,需要不停的做些操作。

哨兵好像没有这些命令

mogodb
环境:
[mongod@mcw01 ~]$ mongo --port 30000
MongoDB shell version: 3.2.8
connecting to: 127.0.0.1:30000/test
[mongod@mcw01 ~]$ ps -ef|grep mongo
mongod 20138 1 0 Mar05 ? 00:11:59 mongod --dbpath /mongodb/m20 --logpath /mongodb/mlog/m20.log --logappend --fork --port 27020 --configsvr
mongod 20158 1 0 Mar05 ? 00:05:03 mongos --logpath /mongodb/mlog/m30.log --logappend --fork --port 30000 --configdb 10.0.0.11:27020
root 61265 56474 0 21:08 pts/0 00:00:00 su - mongod
mongod 61266 61265 0 21:08 pts/0 00:00:00 -bash
mongod 61338 61266 0 21:09 pts/0 00:00:00 ps -ef
mongod 61339 61266 0 21:09 pts/0 00:00:00 grep --color=auto mongo
[mongod@mcw01 ~]$ mongo --port 30000
MongoDB shell version: 3.2.8
connecting to: 127.0.0.1:30000/test
mongos> show dbs;
config 0.001GB
shop 0.000GB
mongos> use shop
switched to db shop
mongos> show tables;
user
mongos> db.user.find().limit(2);
{ "_id" : ObjectId("6223149d46d8d9b89fc9df41"), "userid" : 2000, "intro" : "i am mcw, from china" }
{ "_id" : ObjectId("6223149d46d8d9b89fc9df42"), "userid" : 2001, "intro" : "i am mcw, from china" }
mongos>
提前部署好两个复制集,部署脚本如上
现在部署情况如下
rs3:
10.0.0.12 27017
10.0.0.12 27018
10.0.0.12 27019 rs4:
10.0.0.13 27017
10.0.0.13 27018
10.0.0.13 27019 configsvr :
10.0.0.11 27020 mongos:
10.0.0.11 30000
下载pymongo。下面是连接程序
find_one:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.user.find_one({"_id" : ObjectId("6223149d46d8d9b89fc9df41")}); print(res)
成功查出数据

find:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.user.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res:
print(row)
print(res)
如下,4000条都收到了

查询前四条,括号里放的跟mongodb类似

插入一条数据insert_one:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_one({"name":"cat","age":1})
print(res.inserted_id,type(res.inserted_id))
print(res)
charuChaxun=MongoDB.zoo.find({"_id" : ObjectId(res.inserted_id)})
for row in charuChaxun:
print("查询刚刚插入的数据",row)

多条数据插入insert_many
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"dog","age":1},{"name":"pig","age":1}])
print(res.inserted_ids,type(res.inserted_ids))
print(res)
for i in res.inserted_ids:
charuChaxun = MongoDB.zoo.find({"_id":i})
for row in charuChaxun:
print("查询刚刚插入的数据",row)


只修改一条数据update_one:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":1},{"name":"pig","age":1}])
for i in res.inserted_ids:
charuChaxun = MongoDB.zoo.find({"_id":i})
for row in charuChaxun:
print("查询刚刚插入的数据",row)
MongoDB.zoo.update_one({},{'$inc':{'age':2}})
# MongoDB.zoo.update_many({},{'$inc':{'age':2}})
res2=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('更新后数据查询:',row)


修改多条数据updata_many:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":1},{"name":"pig","age":1}])
for i in res.inserted_ids:
charuChaxun = MongoDB.zoo.find({"_id":i})
for row in charuChaxun:
print("查询刚刚插入的数据",row)
MongoDB.zoo.update_one({},{'$inc':{'age':2}}) #修改一条
MongoDB.zoo.update_many({"age":1},{'$inc':{'age':10}}) #修改多条
res2=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('更新后数据查询:',row)


只删除一个匹配的delete_one
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":1},{"name":"pig","age":1}])
for i in res.inserted_ids:
charuChaxun = MongoDB.zoo.find({"_id":i})
for row in charuChaxun:
print("查询刚刚插入的数据",row)
MongoDB.zoo.update_one({},{'$inc':{'age':2}})
MongoDB.zoo.update_many({"age":1},{'$inc':{'age':10}})
res2=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('更新后数据查询:',row)
MongoDB.zoo.delete_one({"age":11}) #删除一个匹配的
res3=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res3:
print('删除后数据查询:',row)

删除所有匹配的delete_many
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":1},{"name":"pig","age":1}])
for i in res.inserted_ids:
charuChaxun = MongoDB.zoo.find({"_id":i})
for row in charuChaxun:
print("查询刚刚插入的数据",row)
MongoDB.zoo.update_one({},{'$inc':{'age':2}})
MongoDB.zoo.update_many({"age":1},{'$inc':{'age':10}})
res2=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('更新后数据查询:',row)
MongoDB.zoo.delete_many({"age":11}) #删除所有匹配的
res3=MongoDB.zoo.find(); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res3:
print('删除后数据查询:',row)

skip和limit使用:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":2},{"name":"pig","age":5},{"name":"monkey","age":3}])
res2=MongoDB.zoo.find().skip(1).limit(2); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('插入后数据查询:',row)
原本是这样:

使用skip跳过2条数据:

使用limit限制前多少行

跳过第一行,后面的取前两行。取中间的区间

指定字段升序和降序查询asc,desc:
from pymongo import MongoClient
from bson import ObjectId
MC = MongoClient("10.0.0.11",30000)
MongoDB = MC["shop"]
res=MongoDB.zoo.insert_many([{"name":"cat","age":1},{"name":"dog","age":2},{"name":"pig","age":5},{"name":"monkey","age":3}])
from pymongo import DESCENDING,ASCENDING #需要导入正序和倒序
res2=MongoDB.zoo.find().sort('age',ASCENDING); #<pymongo.cursor.Cursor object at 0x02D0B550> 生成器
for row in res2:
print('插入和排序后数据查询:',row)
按指定字段降序查询

按指定字段升序查询

使用1和-1也可以的


python连接redis,mongodb以及简单命令使用的更多相关文章
- Python连接Redis连接配置
1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...
- python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解
1.python mysql redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...
- python连接redis哨兵集群
一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...
- python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis
今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...
- python连接redis,redis集群
python连接redis: import redis r = redis.Redis(host='192.168.50.181',port=6002) r.set('user_phone_14900 ...
- Python使用Redis实现一个简单作业调度系统
Python使用Redis实现一个简单作业调度系统 概述 Redis作为内存数据库的一个典型代表,已经在非常多应用场景中被使用,这里仅就Redis的pub/sub功能来说说如何通过此功能来实现一个简单 ...
- python 连接 redis cluster 集群
一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...
- 【python】Redis介绍及简单使用
一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...
- python连接redis
一.首先,要下载redis pip3 install redis 二.连接redis import redis #拿到一个redis的链接 conn=redis.Redis('127.0.0.1',6 ...
- redis基础之python连接redis(五)
前言 前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6: 系列文章 redis安装和配置 redis命令行操作 ...
随机推荐
- 【直播回顾】如何成为一名优秀的OpenHamrony贡献者?
5月18日晚上19点,战"码"先锋第一期直播<如何成为一名优秀的OpenHamrony 贡献者?>,在OpenHarmony社群内成功举行. 本期课程,由润和资深软件开 ...
- 日调用量超600亿次,HMS Core HiAI Foundation助力AI应用高效开发
随着新技术的不断演进,人工智能已经广泛地应用到教育.金融.物流.零售.交通.医疗等各个领域.而在AI高速发展的当下,高效开发变得更为重要,如何将创意想法与AI技术深度融合,迅速转化为可落地的AI应用, ...
- JMeter接口性能测试工具
博客地址:https://blog.csdn.net/lovesoo/article/details/78579547
- Hive 查看表/分区更新时间
1.查看分区 hive> show partitions table_name; 2.查看分区更新时间 获取hdfs路径 hive> desc formatted table_name; ...
- 重新点亮linux 命令树————目录相关[三]
前言 简单介绍一些目录命令 正文 主要介绍三个命令 cd 路径切换 cd 这个命令用于切换当前目录的. 切换有三种形式. 以/开头的是绝对路径,比如/home. 以.开头的是相对路径,比如说./ser ...
- pageSpy - 远程调试利器
视频版: https://www.bilibili.com/video/BV1Zi4y167TZ 前言 在工作中, 经常需要面对的问题就是处理客户提出的bug. 但是这个事儿最耗费精力甚至决定能不能修 ...
- gitee基于webhooks实现前端简单自动化部署
1.为什么采用自动化部署 简而言之,程序员优秀传统:懒 =>高级生产力. 基于gitee进行的自动化部署,服务器环境为Ubuntu 基于webhooks进行的自动化部署更加轻快便捷 2.部署步骤 ...
- 一文搞懂 SAE 日志采集架构
简介: 本文将着重介绍了 SAE 提供了多种日志采集方案,以及相关的架构,场景使用特点,点击下文,立即查看吧- 作者:牛通(奇卫) 日志,对于一个程序的重要程度不言而喻.无论是作为排查问题的手段, ...
- Flink 在有赞的实践和应用
简介: 本文介绍了Flink 在有赞的实践和应用,内容包括:Flink 的容器化改造和实践.Flink SQL 的实践和应用.未来规划. 作者:沈磊 一.Flink 的容器化改造和实践 1. 有赞的集 ...
- 唯品会:在 Flink 容器化与平台化上的建设实践
简介: 唯品会 Flink 的容器化实践应用,Flink SQL 平台化建设,以及在实时数仓和实验平台上的应用案例. 转自dbaplus社群公众号作者:王康,唯品会数据平台高级开发工程师 自 2017 ...