标签:延时 数据量 临时 情况下 plain rdb 一个 memory 定义
关系型 : MySQL,SQL Server ,Oracle , Sybase, DB2
非关系型 : Redis, MongodDB
1.
第一范式:确保每列保持原子性
2.
第二范式:确保表中的每列都和主键相关
3.
第三范式:确保表中每一列都和主键列直接相关,而不是间接相关.
事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务
一对多 : 一个学校有多个老师.
多对多 : 一个老师可以带多个班级,一个班级有多个老师
触发器: 在执行某种操作前后一些自定义的操作
函数: 处理参数,返回结果
视图: 把需要的数据存放在一张临时表中
存储过程: sql语句集,简化了一些操作.与函数不同,他可以返回一个结果集(查询结果)
联合索引
主键 : 该表中此列唯一,非空
外键 : 该列中的值必须是关联表中关联的数据
Mysqldump -h127.0.0.1 -P3306 -uroot -p密码 数据库名称>xx.sql
#char类型:定长,简单粗暴,浪费空间,存取速度快
#varchar类型:变长,精准,节省空间,存取速度慢
全局遍历与只取一条
越是向后,扫描的数据也就越多
解决方案:按照需求实现,可分为
使用多个主键进行查询
查询内容在主键中可以直接查到
建立主从关系,实现高可用,并减少主服务器的压力
水平 : 数据库字段过多
垂直 : 数据库行数太多
0-15,相当于不同的库
def list_iter(name): """ 自定义redis列表增量迭代 :param name: redis中的name,即:迭代name对应的列表 :return: yield 返回 列表元素 """ list_count = r.llen(name) for index in xrange(list_count): yield r.lindex(name, index)
在从服务器中配置 SLAVEOF
127.0
.
0.1
6380
# 主服务器IP,端口
监控主机状态,实现高可用
安装集群软件
16384
---------rdb:快照形式是直接把内存中的数据保存到一个dump文件中,定时保存,保存策略
---------aof:把所有的对redis的服务器进行修改的命令都存到一个文件里,命令的集合
redis内存数据级上升到一定大小时,就会实行数据淘汰策略,从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
class Zhan: def __init__(self,conn): self.conn = conn def push(self,val): self.conn.rpush(‘aaa‘,val) def pop(self): return self.conn.rpop(‘aaa‘) class Dui: def __init__(self,conn): self.conn = conn def push(self,val): self.conn.rpush(‘bbb‘,val) def get(self): return self.conn.lpop(‘bbb‘) class Xu: def __init__(self,conn): self.conn = conn def push(self,val,count): self.conn.zadd(‘ccc‘,val,count) def get(self): a = self.conn.zrange(‘ccc‘, 0, 0)[0] self.conn.zrem(‘ccc‘, a) return a
将列表维护成一个栈,设置获取数据的超时时间
发送消息 : conn.publish(名称,消息)
接收消息 : conn.sunscribe(名称)
区别 : 消息队列,收到消息只会有一个处理者;发布订阅,所有的订阅者都会收到消息并进行处理
豌豆荚团队提供的一个分布式 Redis 解决方案
Twemproxy 又称 nutcracker ,是一个memcache、redis协议的轻量级代理,一个用于sharding 的中间件。有了Twemproxy,客户端不直接访问Redis服务器,而是通过twemproxy 代理中间件间接访问。
作用 : 对redis数据分片处理
import redis pool = redis.ConnectionPool(host=‘10.211.55.4‘, port=6379) conn = redis.Redis(connection_pool=pool) # transaction默认为False,只可以完成批量提交的作用,节省网络延时 # 改为True后可以实现事务功能 # pipe = r.pipeline(transaction=False) pipe = conn.pipeline(transaction=True) # 开始事务 pipe.multi() pipe.set(‘name‘, ‘alex‘) pipe.set(‘role‘, ‘sb‘) pipe.lpush(‘roless‘, ‘sb‘) # 提交 pipe.execute()
加锁
字符串的decr可以实现自减操作
为redis集群设计的锁,防止多个任务同时修改数据库,其本质就是为集群中的每个主机设置一个会超时的字符串,当集群中有一半多的机器设置成功后就认为加锁成功,直至锁过期或解锁不会有第二个任务加锁成功
# 命令模式 KEYS * # *代表通配符 # redis模块 import redis con = redis.Redis() con.keys(pattern=‘celery*‘) # *代表通配符
标签:延时 数据量 临时 情况下 plain rdb 一个 memory 定义
原文地址:https://www.cnblogs.com/xinyangsdut/p/9183652.html