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 ...
随机推荐
- 结合uWSGI和Nginx部署flask项目
在开发环境,我们一般使用python起一个web服务即可访问,但是对于生产环境来说,我们一般使用nginx+uWSGI的方式进行部署. 使用Nginx优点: 安全:不管什么请求都要经过代理服务器,这样 ...
- KETTLE 复制次数
作用就是开启多线程. 比如上例设置为6. 总共 17条数据,分为6次执行,可以看出是启用了多线程执行.
- 前端必须知道的手机调试工具vConsole
在日常业务中我相信大家多多少少都有移动端的项目,移动端的项目需要真机调试的很多东西看不到调试起来也比较麻烦,今天给大家分享一个我认为比较好用的调试第三方库VConsole ,有了这个库咱们就在手机上看 ...
- Vue.js与jQuery混用
标签: js 坑位 最近开发一个需求,项目有用到jQuery和Vue,发现我jQuery绑定的事件全部都失效了. Why Vue会重新渲染dom,加上是异步实例Vue.所以正常写程序的话jq的$()获 ...
- Fuzz技术综述与文件Fuzz
文章一开始发表在微信公众号 https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247486189&idx=1&sn= ...
- Electron 通信
1.web向主进程发送消息 (单项) 使用ipcMain.on 监听事件 const hanle = (event, data) => { console.log(event) console. ...
- 优化大宽表查询性能,揭秘GaussDB(DWS) 谓词列analyze
本文分享自华为云社区<GaussDB(DWS) 谓词列analyze揭秘>,作者:SmithCoder. 1. 前言 适用版本:[9.1.0.100(及以上)] 当前GaussDB(DW ...
- Qt开源作品6-通用视频控件
一.前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比 ...
- ImageSharp:高性能跨平台.NET开源图形库
在.Net中,System.Drawing有平台限制的问题,如果需要跨平台就需要使用第三方库. 今天推荐一个.NET开源图形库,不依赖任何库,支持跨平台的图形库. 01 项目简介 ImageSharp ...
- 小程序分享pdf文件(uniapp)
share(){ wx.downloadFile({ url: '', // 下载url success (res) {// 下载完成后转发 wx.shareFileMessage({ filePat ...