在开发过程中,总有一些需求是需要查看在A表中ID不存在于B表中的ID的情况:
下面有三种方法可以实现这一需求:
第一种:使用Not in 方法通过子查询的结果集来做过滤:
0 |
select * from A where 1=1 AND A.ID not in (select ID from B ) |
这种情况最常见也是最容易理解的逻辑SQL代码,但是会有很多问题出现。 Continue reading
在开发过程中,总有一些需求是需要查看在A表中ID不存在于B表中的ID的情况:
下面有三种方法可以实现这一需求:
第一种:使用Not in 方法通过子查询的结果集来做过滤:
0 |
select * from A where 1=1 AND A.ID not in (select ID from B ) |
这种情况最常见也是最容易理解的逻辑SQL代码,但是会有很多问题出现。 Continue reading
MySQL主流引擎是MyISAM模式,这种模式方便使用和维护,Innodb为后来加入的另外一种模式,这种模式支持的功能更强大,是未来发展趋势。
又有个小项目,本地开发(也是框架需要)使用的InnoDB引擎,但当项目开发得差不多了,需要实测上到客户主机后,发现没有InnoDB引擎,说实话,还是头一回碰到没有InnoDB引擎的情况,客户使用的是护卫神服务器管理系统,安装环境可能是套件,没有细了解,那么如何开启MySQL数据库的InnoDB模式呢?下面是我在网上找的。 Continue reading
Vue + Node + Mongodb 开发一个完整博客流程
前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统
服务端用的是 koa2框架 进行开发
Vue + vuex + element-ui + webpack + nodeJs + koa2 + mongodb
python获取所有数据,获取redis库中所有键值对
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0) r = redis.Redis(connection_pool=pool) len = 0 key_list = [] print r.pipeline() keys = r.keys() for key in keys: key_list.append(key) pipe.get(key) if len < pipe_size: len += 1 else: for (k, v) in zip(key_list, pipe.execute()): print k, v len = 0 key_list = [] for (k, v) in zip(key_list, pipe.execute()): print k, v |
Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。
一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。
设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次。如果能一次性将100个请求提交给redis server,执行完成之后批量的获取相应,只需要向redis请求1次,然后批量执行完命令,一次性结果,性能是不是会好很多呢?
答案是肯定的,节约的时间是客户端client和服务器redis server之间往返网络延迟的时间。这个时间可以用ping命令查看。
网络延迟高:批量执行,性能提升明显
网络延迟低(本机):批量执行,性能提升不明显
某些客户端(java和python)提供了一种叫做pipeline的编程模式用来解决批量提交请求的方式。
这里我们用python客户端来举例说明一下。 Continue reading
1、python连接redis操作数据
0 1 2 3 4 5 6 7 8 9 |
#!/usr/bin/env python # -*- coding:utf8 -*- import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('foo', 'Bar') print (r.get('foo')) # 输出 Bar |
2、python连接redis操作线程池
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/usr/bin/env python # -*- coding:utf8 -*- import redis pool = redis.ConnectionPool(host='localhost', port=6379, db=0) r = redis.Redis(connection_pool=pool) pipe = r.pipeline() pipe_size = 100000 r.set('foo2', 'Bar2') print (r.get('foo2')) # 输出 Bar2 pipe = r.pipeline() pipe_size = 100000 |
3、decode_responses=True:这样写存的数据是字符串格式
0 1 2 |
import redis r = redis.Redis('127.0.0.1', 6379,decode_responses=True) |
4、获取库中所有键名
0 1 |
keys = r.keys() print(keys) |
windows下后台启动redis
打开命令行窗口
启动服务命令:redis-server --service-start
停止服务命令:redis-server --service-stop
启动指定的配置文件:redis-server --service-start redis.windows-service.conf
python2,python3,pip安装redis后报错
redis.exceptions.ConnectionError: Error 10061 connecting to localhost:6379.
这是因为没有安装redis,redis安装方法>>
开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases。
以下操作需要在下载的 phpredis 目录中完成: Continue reading
一些案例中有的同学说为什么不可以用string类型,string类型完全可以实现呀
我建议你看下《Redis高级用法》,里面介绍了用hash类型的好处
对商品喜欢数,评论数,鉴定数,浏览数进行计数
说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc)
Redis的命令都是原子性的,你可以轻松地利用INCR,DECR等命令来计数。采用Redis 的类型: Hash. 如果你对redis数据类型不太熟悉,可以参考
http://redis.io/topics/data-types-intro为product定义个key product:,为每种数值定义hashkey, 譬如喜欢数like_num Continue reading