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以及简单命令使用的更多相关文章

  1. Python连接Redis连接配置

    1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...

  2. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...

  3. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

  4. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

  5. python连接redis,redis集群

    python连接redis: import redis r = redis.Redis(host='192.168.50.181',port=6002) r.set('user_phone_14900 ...

  6. Python使用Redis实现一个简单作业调度系统

    Python使用Redis实现一个简单作业调度系统 概述 Redis作为内存数据库的一个典型代表,已经在非常多应用场景中被使用,这里仅就Redis的pub/sub功能来说说如何通过此功能来实现一个简单 ...

  7. python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...

  8. 【python】Redis介绍及简单使用

    一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...

  9. python连接redis

    一.首先,要下载redis pip3 install redis 二.连接redis import redis #拿到一个redis的链接 conn=redis.Redis('127.0.0.1',6 ...

  10. redis基础之python连接redis(五)

    前言 前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6: 系列文章 redis安装和配置 redis命令行操作 ...

随机推荐

  1. OpenHarmony父子组件单项同步使用:@Prop装饰器

      @Prop装饰的变量可以和父组件建立单向的同步关系.@Prop装饰的变量是可变的,但是变化不会同步回其父组件. 说明: 从API version 9开始,该装饰器支持在ArkTS卡片中使用. 概述 ...

  2. C++ 编程入门指南:深入了解 C++ 语言及其应用领域

    C++ 简介 什么是 C++? C++ 是一种跨平台的编程语言,可用于创建高性能应用程序. C++ 是由 Bjarne Stroustrup 开发的,作为 C 语言的扩展. C++ 为程序员提供了对系 ...

  3. 深入理解 Java 变量类型、声明及应用

    Java 变量 变量是用于存储数据值的容器.在 Java 中,有不同类型的变量,例如: String - 存储文本,例如 "你好".字符串值用双引号引起来. int - 存储整数( ...

  4. HarmonyOS系统级推送服务,打造消息通知新体验

    8月4日,第五届华为开发者大会 2023(HDC.Together)再次启航.在本次大会上,华为为广大用户带来了HarmonyOS 4全新升级的体验,同时,针对HarmonyOS应用的开发,此次也全面 ...

  5. 【Insights直播】华为帐号服务,打造全场景安全帐号体系

    在App运营过程中,如何保持用户增长和提升用户体验始终是开发者关注的问题,而作为用户使用体验感知的第一环节--帐号注册登录环节是不可忽视,且有很大提升空间的.如何提升帐号的注册登录体验?如何保证用户在 ...

  6. 多线程-多个子线程执行结果插入List集合

    业务场景:将多个子线程的执行结果存入List,但是总会出现List集合的长度小于子线程的执行数的情况 1.错误示例(多个线程同时操作同一个List对象,List是线程不安全) package unit ...

  7. HarmonyOS应用兼容稳定性云测试

      兼容性测试 兼容性测试主要验证HarmonyOS应用在华为真机设备上运行的兼容性问题,包括首次安装.再次安装.启动.卸载.崩溃.黑白屏.闪退.运行错误.无法回退.无响应.设计约束场景.具体兼容性测 ...

  8. Maven 必备技能:MAC 系统下 JDK和Maven 安装及环境变量配置详细讲解

    开发中难免因系统问题或者版本变更反复折腾JDK和Maven环境变量,干脆写个笔记备忘个,也方便小伙伴们节省时间. =================JDK安装与环境变量配置====== 1.官网下载j ...

  9. 百度AIPNLP 文本相似度 文本审核

    效果不如有监督的bert文本相似度好 from aip import AipNlp APP_ID = "22216281" APT_KEY = "foEeYauuvnqW ...

  10. easyx的使用,图像插入(2.0)

    本文从B站学习,借鉴,一些贴图素材借鉴游戏网图: 视频链接:图像输出_哔哩哔哩_bilibili 想使用图片,先用easyx提供的数据类型定义一个变量: 在对图片进行加载,差不多像是赋值,这个变量名相 ...