概述:

>>>安装:

>>>数据类型:

  string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

>>>数据备份:redis 127.0.0.1:6379> SAVE

>>>设置密码:127.0.0.1:6379> CONFIG set requirepass "123456"

>>>性能测试:redis-benchmark -n 100000

>>>最大链接数:redis-server --maxclients 100000

>>>Redis是基于客户端-服务端模型  请求/响应的TCP服务

  所以客户端通常是阻塞模式,等待服务端响应

  Redis管道技术可以让客户端继续向服务端发送请求,最终一次性返回所有响应

>>>Redis分区,利用多台计算机内存,构建大型数据库

  范围分区:ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推

  哈希分区:crc32 hash函数-->key转换为一个数字-->93024922 % 4 = 2,存R2

面试题:

1 远程-非关系型数据库-内存-缓存

2 它可以用作数据库、缓存和消息中间件

3 速度快,丰富数据类型

4 redis常见性能问题和解决方案

  Redis 是单进程单线程 利用队列技术将并发访问变为串行访问

命令:

String:

key - value(string/int/float)

-----set string1 ‘haha’

-----get string1

list:

key - [12,13,14,15]    左->右

-----lpush list1 12

-----lpop list1

-----llen  list1

set:

key - [1,2,3,4]   无序

-----sadd set1 12

-----scard set1  查看

-----sismember set1 12  是否存在

------srem  set1  删

hash:

key - key1 value(string/int/float)

key2 value(string/int/float)

   key3 vlaue(string/int/float)

-----hset hash1 key1 12

-----hget hash1 key1

-----hlen hash1

sort set:

key - score(10.1)  value(string/int/float)  rank:1

    score(9.9)  value(string/int/float)  rank:0

score(10.2)  value(string/int/float)  rank:2

----zadd  zset1  12.2  val1

----zcart  zset1  查

-----zrange  zset1  0  2  withscores    排序

python-django应用:

'''缓冲redis'''
import redis
import pickle class PersonMetaclass(type):
'''单例模式'''
__instance = None
def __call__(self, *args, **kwargs):
if not self.__instance:
self.__instance = super().__call__(*args, **kwargs)
return self.__instance class Redis(object,metaclass=PersonMetaclass):
'''共享缓存'''
def __init__(self,host='127.0.0.1', port=6379, password=''):
'''初始'''
# 链接redis
self._redis=redis.Redis(host=host, port=port, password=password)
self.redis = self._redis def setString(self,*args):
'''' aaa',1 '''
key,value = args
self._redis.set(key,pickle.dumps(value)) def setList(self,*args):
'''' names_list', *['fi', 'li'] '''
key, *v = args
self._redis.lpush(key,pickle.dumps(*v))
map(lambda value: self._redis.lpush(key,pickle.dumps(value)),list(v)) def setSet(self):
''' key, *['fi', 1] '''
pass def setHash(self,name,**kwargs):
''' hash1,{k1:1,k2:2,} '''
keys,values = kwargs.items()
map(lambda key,value:self._redis.hset(name, key, pickle.dumps(value)),list(keys),list(values)) def setSortSet(self,name,nx=False, xx=False, ch=False, incr=False,**kwargs):
'''
key,[score:value:rank,]
设置任意数量的元素名称,将对的值设置为键
' ' name ' ' '双指定为元素名称键的dict以获得值。
' ' nx ' ' '强制ZADD只创建新元素,不更新
已经存在的元素的得分。
' ' xx ' ' '强制ZADD只更新已经更新的元素的分数
存在。不会添加新元素。
' ' ch ' '将返回值修改为已更改的元素数量。
更改的元素包括添加的新元素和元素
分数的改变。
'''
sorts, values = kwargs.items()
map(lambda sort, value: self._redis.zadd(name, pickle.dumps(sort), nx=nx, xx=xx, ch=False, incr=incr), list(sorts), list(values)) def length(self,*args):
''' 长度 list '''
try:
name,*name1 = args
if args.__len__() == 1:
return len(self.get(name))
return [ self._redis.llen(lens) for lens in args ]
except:
return None def int_or_str(value):
'''''' def set(self,*args,TYPE=None, **kwargs):
'''
存入,String,list
String:key->value(int,str,float)
list: key->list--[]
'''
try:
a,*b = args
if TYPE is not None:
if TYPE == 'hash':
self.setHash(a,**kwargs)
elif TYPE == 'sort':
self.setSortSet(a,**kwargs)
elif len(b) == 1:
self.setString(*args)
elif len(b) > 1 :
self.setList(*args)
assert 'key error'
except ValueError:
return ValueError def get(self,name):
''' 取出 '''
try:
return pickle.loads(self._redis.get(name))
except:
return None def getList(self,name):
try:
return pickle.loads(self._redis.rpop(name))
except:
return None def getHash(self,*args):
try:
name,key,*value = args
return pickle.loads(self._redis.hmget(name,key,*value))
except:
return None

python-Web-数据库-Redis的更多相关文章

  1. Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》

    首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...

  2. 【简说Python WEB】数据库

    目录 [简说Python WEB]数据库 数据库表 docker安装MySQL Flask-SQLAlchemy操纵MySQL数据库 初始化 定义模型 定义关系 数据库的CRUD操作 创建表 inse ...

  3. python web开发——django学习(一)第一个连接mysql数据库django网站运行成功

    1.新建一个项目 2.新建一些文件夹方便管理 3.新建一个项目叫message  4.连接数据库 python web开发Django连接mysql 5.在数据库里自动生成django的表  6.运行 ...

  4. 【简说Python WEB】视图函数操作数据库

    目录 [简说Python WEB]视图函数操作数据库 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:virutalenv Python的版本:Python 3.6.9 ...

  5. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  6. 使用python操作RabbitMQ,Redis,Memcache,SQLAlchemy 其二

    一.概念 1.Memcached     Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 ...

  7. 使用python操作RabbitMQ,Redis,Memcache,SQLAlchemy 其一

    一.概念 1.Memcached     Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 ...

  8. 缓存数据库redis

    什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...

  9. python web 开发学习路线

    转载,备着 自己目前学习python web 开发, 经过两个月的摸索,目前对web开发有了浅显的认识,把自己的学习过程贴出来.1.python入门推荐老齐<从零开始学python>,&l ...

  10. 实战接口开发:python + flask + mysql + redis(根据反馈,持续细化更新。。。)

    前言 自动化已经成为测试的必备技能之一了,所以,很多想跳槽的测试朋友都在自学,特别是最实用的接口自动化, 但是很多人因为没有可以练手的项目而苦恼,最终导致缺乏实战经验,其实,完全可以自己开发个简单项目 ...

随机推荐

  1. uboot驱动模型(DM)分析(二) (转)

    上篇分析了两个关键宏U_BOOT_DRIVER及U_BOOT_DEVICES的作用,有了上篇的基础,本文将分析: 1.上篇中的uboot_list段中的信息如何被用起来? 2.uclass,uclas ...

  2. 爱搞事情的webpack

    webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency g ...

  3. CSS引入外部字体方法,附可用demo

    有时候我们做的页面需要用到一些更好看的字体又不想用图片代替,图片会影响加载速度则使用外部字体来显示但是直接通过font-family又不一定全部都行这就需要我们在css中进行定义并且引入字体文件路径然 ...

  4. Hadoop-No.7之行键

    和哈希表类比,HBase中的行键类似于哈希表中的键.要构造一个良好的HBase模式,关键之一就是选择一个合适的行键. 1 记录检索 行键是HBase中检索记录所使用的键.HBase记录含有的列在数量上 ...

  5. Jmeter接口测试+压力测试(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/github_27109687/artic ...

  6. C# 数据类型转化为byte数组

    short数据与byte数组互转 public byte[] ShortToByte(short value) { return BitConverter.GetBytes(value); } pub ...

  7. [Python之路] 实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦)

    本文描述如果简单实现自定义Web服务器与自定义简易框架,并且不断进行版本迭代,从而清晰的展现服务器与Web框架之间是如何结合.如何配合工作的.以及WSGI是什么. 本文帖的代码有点多,但基本每次迭代修 ...

  8. 一、Django入门

    1.安装: 下载地址:https://www.djangoproject.com/download/ 原文节选: How to get Django Django is available open- ...

  9. CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)G

    题面 一道暴水的dp....别问我为什么直接打开了G题,我只是对题目名称感兴趣而已.... #include<bits/stdc++.h> #define ll long long usi ...

  10. vue-cli3的vue.config.js文件配置,生成dist文件

    //vue.config.jsonconst path = require('path'); // const vConsolePlugin = require('vconsole-webpack-p ...