redis的连接池和管道
- 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高
- 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展
- 关系型数据库的优势:复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询;事务支持使得对于安全性能很高的数据访问要求得以实现
- 对于这两类数据库,对方的优势就是自己的弱势,所以如何利用好这两种数据库的强项,使其相互补充,是一个很重要的需要好好设计的问题
redis简介
[root@web ~]# cd /usr/local/src/
[root@web src]# wget http://download.redis.io/releases/redis-3.2.5.tar.gz
[root@web src]# tar -zxf redis-3.2.5.tar.gz
[root@web src]# cd redis-3.2.5
[root@web redis-3.2.5]# make [root@web redis-3.2.5]# vim /usr/local/src/redis-3.2.5/redis.conf //默认配置文件,把daemonize no 改为daemonize yes,允许后台启动 [root@web redis-3.2.5]# cd src
[root@web src]# pwd
/usr/local/src/redis-3.2.5/src
[root@web src]# ls
-rwxr-xr-x 1 root root 5580311 11月 25 11:18 redis-benchmark //基准测试
-rwxr-xr-x 1 root root 22185 11月 25 11:18 redis-check-aof //aof持久化
-rwxr-xr-x 1 root root 7826902 11月 25 11:18 redis-check-rdb //rdb持久化
-rwxr-xr-x 1 root root 5709036 11月 25 11:18 redis-cli //linux上的redis客户端
-rwxr-xr-x 1 root root 7826902 11月 25 11:18 redis-sentinel //哨兵,用于redis集群选举
-rwxr-xr-x 1 root root 7826902 11月 25 11:18 redis-server //redis服务端程序 [root@web src]# ./redis-server /usr/local/src/redis-3.2.5/redis.conf //启动redis [root@web src]# netstat -lnp //监听127.0.0.1:6379
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 4443/./redis-server
redis客户端安装
[root@web ~]# pip install redis [root@web ~]# ipython
In [1]: import redis
[root@web redis_py]# cat demon1.py
#!/usr/bin/env python import redis r = redis.Redis(host='localhost', port=6379, db=0, password=None) //实例化Redis这个类获得一个对象r,对象的方法就是redis的所有命令
r.set('name', 'aaa') //set()方法往服务端存入两个键值对
r.set('age', 30)
print r.get('name') //get(key)方法获取key对应的value
print r.keys() //keys()方法打印所有的key [root@web redis_py]# python demon1.py
aaa
['age', 'name']
redis连接池
[root@web redis_py]# cat demon2.py
#!/usr/bin/env python import redis def getConnection():
config = {
'host': 'localhost',
'port': 6379,
'db': 0,
'password': None
}
pool = redis.ConnectionPool(**config)
r = redis.Redis(connection_pool=pool)
return r if __name__ == '__main__':
r = getConnection()
r.set('gender', 'M')
print r.get('gender') [root@web redis_py]# python demon2.py
M
管道:
In [6]: help(r.pipeline)
Help on method pipeline in module redis.client: pipeline(self, transaction=True, shard_hint=None) method of redis.client.Redis instance //获取一个连接对象,通过连接对象创建一个管道
Return a new pipeline object that can queue multiple commands for //返回一个管道对象
later execution. ``transaction`` indicates whether all commands //自动执行多条命令(把多个请求发送到服务端)
should be executed atomically. Apart from making a group of operations
atomic, pipelines are useful for reducing the back-and-forth overhead //提高处理能力
between the client and server
使用管道和不使用管道的效率对比:
[root@web redis_py]# cat demon3.py
#!/usr/bin/env python import redis
import datetime
from demon2 import getConnection def withpipeline(r):
p = r.pipeline(transaction=True)
for i in xrange(1000):
key = 'test1' + str(i)
value = i+1
p.set(key, value)
p.execute() def withoutpipeline(r):
for i in xrange(1000):
key = 'test2' + str(i)
value = i+1
r.set(key, value) if __name__ == '__main__':
r = getConnection()
start = datetime.datetime.now()
withpipeline(r)
end = datetime.datetime.now()
offset = (end-start).microseconds
print 'With pipeline time: {0}'.format(offset)
start = datetime.datetime.now()
withoutpipeline(r)
end = datetime.datetime.now()
offset = (end-start).microseconds
print 'Without pipeline time: {0}'.format(offset) [root@web redis_py]# python demon3.py
With pipeline time: 16403
Without pipeline time: 43398
redis的连接池和管道的更多相关文章
- redis运用连接池报错解决
redis使用连接池报错解决redis使用十几小时就一直报异常 redis.clients.jedis.exceptions.JedisConnectionException: Could not g ...
- nodejs + redis/mysql 连接池问题
nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接 ...
- Redis Java连接池调研
Redis Java连接池调研 线上服务,由于压力大报错RedisTimeOut,但是需要定位到底问题出现在哪里? 查看Redis慢日志,slowlog get 发现耗时最大的也是11000us也就是 ...
- python redis之连接池的原理
python redis之连接池的原理 转载地址 什么是连接池 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接, 一般情况下 ...
- python 基础 10.0 nosql 简介--redis 连接池及管道
一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且 ...
- Redis缓存连接池管理
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.Assert;import ...
- java客户端Jedis操作Redis Sentinel 连接池
pom配置: <dependency> <groupId>org.springframework.data</groupId> <artifactId> ...
- redis mysql 连接池 之 golang 实现
1 mysql 连接池代码 package lib import ( "database/sql" "fmt" "strconv" &quo ...
- redis单机连接池
一.配置文件 1. db.properties配置文件#IP地址 redis.ip = 127.0.0.1 #端口号 redis.port= #最大连接数 redis.max.total= #最大空闲 ...
- Redis 配置连接池,redisTemplate 操作多个db数据库,切换多个db,解决JedisConnectionFactory的设置连接方法过时问题。(转)
环境 springmvc jdk1.8 maven redis.properties配置文件 #redis setting redis.host=localhost redis.port=6379 r ...
随机推荐
- ClickHouse 物化视图学习总结
物化视图 物化视图源表--基础数据源 创建源表,因为我们的目标涉及报告聚合数据而不是单条记录,所以我们可以解析它,将信息传递给物化视图,并丢弃实际传入的数据.这符合我们的目标并节省了存储空间,因此我们 ...
- Net5学习笔记
IOC 容器IServiceCollection 什么是Ioc 把对象的统一创建交给第三方容器来创建 如何使用内置IOC ServerCollection 1.在Starup中的ConfigurSer ...
- 真正“搞”懂HTTPS协议19之HTTPS优化
这是本系列的最后一篇了,其实本篇的内容也跟前两篇TLS的握手和优化有关系.其实HTTPS的核心就是TLS的明文握手连接,前两篇我们花了很大的篇幅来聊这些,另外一个就是在TLS握手完成后的密文传输部分了 ...
- [转载] 6 个技巧,提升 C++11 的 vector 性能
转载:https://www.sohu.com/a/120595688_465979 Vector 就像是 C++ STL 容器的瑞士军刀.Bjarne Stoutsoup 有一句话 – " ...
- nodejs koa2 ocr识别 身份证信息
1. 安装依赖 npm install baidu-aip-sdk 2.创建AipOcrClient 注:需要到百度api创建应用,拿到所需的APPID/AK/SK https://console.b ...
- 履机乘变,轻舟便楫:源启分布式PaaS深度赋能企业级技术平台建设
导语 源启分布式PaaS平台围绕应用视角为用户提供应用运行的全生命周期管控能力,提供注册中心.服务路由.网关.服务治理等中间件技术支持,实现应用之间的联通,解决客户多厂商产品不兼容.产品组合不可选择. ...
- 【NAS】绿联NAS UGOS PRO 使用natfrp(Sakura Frp)内网穿透访问Docker应用
配置加速 https://registry.cn-hongkong.aliyuncs.com 下载镜像 创建容器 [容器]-[创建]-[手动创建]- 选择你下载的镜像即可 在日志中查看密码 访问容器 ...
- 【Web前端】【开源分享】H5登陆界面 - 2021年12月24日
点我下载
- Golang实战:深入解析国密算法在Go语言中的应用与优化
Golang实战:深入解析国密算法在Go语言中的应用与优化 引言 随着信息技术的迅猛发展,数据安全成为企业和个人关注的焦点.国密算法(SM系列算法)作为我国自主研发的密码算法标准,逐渐在各个领域中得到 ...
- Netty 中ChannelOption的含义以及使用的场景Netty 中ChannelOption的含义以及使用的场景
一.概述 最近在写一个分布式服务框架,打算用netty框架做底层网络通信,关于netty的学习可以参考如下资料: http://blog.csdn.net/column/details/enjoyne ...