返回总目录页

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也可以的

 

 

 

posted @ 2022-03-06 19:10  马昌伟  阅读(324)  评论(0编辑  收藏  举报
博主链接地址:https://www.cnblogs.com/machangwei-8/