概述:

>>>安装:

>>>数据类型:

  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. 王某的NLP之路前言

    感谢基友jayjay和海英学姐的指路,其实我的方向一直比较迷茫. 因为自己是会计学出身的,前三年也没接触编程,第一次接触还是在2016年,尝试用聚宽的量化接口,当时顺便学了python 的一点知识. ...

  2. JAVA实现图片叠加效果

    import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.image.BufferedImage; imp ...

  3. FZU-1901-Period 2(KMP)

    链接: https://vjudge.net/problem/FZU-1901 题意: For each prefix with length P of a given string S,if S[i ...

  4. VC:检测网络连接的方法

    方法一: #include "stdafx.h" #include "windows.h" #include <Sensapi.h> #includ ...

  5. hadoop安装后运行一个单实例(测试MapReduce程序)

    1.安装hadoop 解压hadoop-1.2.1-bin.tar.gz包   tar -zxvf hadoop-1.2.1-bin.tar.gz  /opt/modules/ 解压后在/opt/mo ...

  6. 【CUDA 基础】3.3 并行性表现

    title: [CUDA 基础]3.3 并行性表现 categories: - CUDA - Freshman tags: - nvprof toc: true date: 2018-04-15 21 ...

  7. Into Blocks (easy version)

    G1 - Into Blocks (easy version) 参考:Codeforces Round #584 - Dasha Code Championship - Elimination Rou ...

  8. docker Tomcat镜像

    docker中的管理命令 首先需要去下载镜像. [root@CFCA ~]# docker pull tomcat    下载镜像[root@CFCA ~]# docker images       ...

  9. [CSP-S模拟测试]:走路(期望DP+分治消元)

    题目传送门(内部题100) 输入格式 第一行两个整数$n,m$,接下来$m$行每行两个整数$u,v$表示一条$u$连向$v$的边.不保证没有重边和自环. 输出格式 $n-1$行每行一个整数,第$i$行 ...

  10. TensorFlow 学习(4)——MNIST机器学习进阶

    要进一步改进MNIST学习算法,需要对卷积神经网络进行学习和了解 学习材料参见https://www.cnblogs.com/skyfsm/p/6790245.html 卷积神经网络依旧是层级网络,只 ...