redis 安装
   -redis安装  
  -window的安装
  -redis支持5大数据类型
    -字符  Memcached 只支持字符串类型
    -列表
    -字典
    -集合
    -有序集合  
  -可以持久化,单线程,单进程(10w)
  -py操作reddis
    
-安装模块pip3 install redis
 
  redis链接:
import redis

# 拿到一个redis链接
coon = redis.Redis(host='127.0.0.1',port=6379) # pool为单例模式 连接池
pool = redis.ConnectionPool(host='127.0.0.1',port=6379) # 从链接池 去一个链接
conn = redis.Redis(connection_pool=pool) redis字符串操作
# ex,过期时间(秒)
# px,过期时间(毫秒)
# nx,如果设置为True,则只有name不存在时,当前set操作才执行,反之则不执行
# xx,如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,反之不进行更新
conn.set('name', 'egon', nx=True) import datetime
v=datetime.timedelta(weeks=2)
ctime=datetime.datetime.now()
ctime+v # 设置值,只有name不存在时,执行设置操作(添加),如果存在,不会修改 过期时间为5秒
conn.setex('ttt', 5,'xxx') # 批量插入
conn.mset({"k1": 'v1', "k2": 'v12', "k3": 'v3'}) # 可自动识别列表
value1=conn.mget('name','k1','k2')
value2=conn.mget(['name','k1','k2']) # 设置新值并获取原值
print(conn.getset('name','xxxxxx')) # 获取子序列(开始字节 结束字节)
conn.getrange('name',1,2) # 修改字符串内容(指定索引后替换)
conn.setrange('name', 1, 'eerrrrrrrrrrrrrrrr') # 查询对应值字节长度
print(conn.strlen('name')) # 自增(需要在此之前set)
conn.incr('age',-4) # 追加 在name中追加内容
conn.append('name','0000000') redis字典操作
# 插入或修改字典
conn.hset('person','age','18') # 批量插入字典
conn.hmset('person2',{'age':'19','name':'egon','xx':'xx'}) # 在name对应的hash中获取根据key获取value
print(conn.hget('person','name')) # 在name对应的hash中获取多个key的值
print(conn.hmget('person2',['age','name','xx'])) # 获取name对应hash的所有键值
print(conn.hgetall('person')) # 获取name对应的hash中键值对的个数
print(conn.hlen('person')) # 获取name对应的hash中所有的key的值
print(conn.hkeys('person')) # 检查name对应的hash是否存在当前传入的key
print(conn.hexists('person','nameee')) # 将name对应的hash中指定key的键值对删除
conn.hdel('person2','name','age') # 自增name对应的hash中的指定key的值,不存在则创建key=amount
conn.hincrby('person','age') for i in range(1000000):
conn.hmset('person2',{'eeeeee%s'%i:i})
# 如果数据量不大,自动全取出来
cour2 = 0
count = 1
while True:
cour2, data2 = conn.hscan('person2', cursor=cour2, match=None, count=3000)
count += len(data2)
if cour2 == 0:
break
# 不用getall的方式取,用这种方式取,也能把所有数据取出来,但是不会吧内存撑爆
data=conn.hscan_iter('person2', match=None, count=100)
# 内部有915371条数据
# 先去取100条
# 做成了生成器
# 取值的时候,100以内,没有再去查,用的是生成器
# 当超过一百,再去取100条.做成了生成器
for i in data:
print(i) redis操作列表
# 添加元素在列表的最左边
conn.lpush('list','2') # 添加元素在列表的最右边
conn.rpush('list','3') # 只有name已经存在时,值添加到列表的最左边
conn.lpushx('list2','3') # 列表list元素个数
print(conn.llen('list')) # 在列表list 第三个值前/后插入一个新值
conn.linsert('list', 'after', "3", '444444')
conn.linsert('list', 'before', "3", '5555555') # 对列表中索引值进行重新赋值
conn.lset('list',4,'66666666') # 删除指定值
conn.lrem('list',0,"3") # 删除列表左(右)侧第一个值并返回该值
print(conn.lpop('list'))
print(conn.rpop('list')) # 按索引取值,支持负索引
print(conn.lindex('list',-2)) # 将多个列表排列,按照从左到右去pop对应列表的元素
# 可以用于简单的分布式爬虫
print(conn.blpop('list')) # 批量插入数据
conn.lpush('list',*[1,2,3,4,45,5,6,7,7,8,43,5,6,768,89,9,65,4,23,54,6757,8,68]) # 在list对应的列表元素分片获取数据
print(conn.lrange('list',0,-1)) # 自定义列表的增量迭代
def scan_list(name,count=2):
index=0
while True:
data_list=conn.lrange(name,index,count+index-1)
if not data_list:
return
index+=count
for item in data_list:
yield item
# print(conn.lrange('test',0,100))
for item in scan_list('list',5):
print(item) redis模拟事物
# 事务(不支持事务,但是通过管道模拟)
conn=redis.Redis(host='127.0.0.1', port=6379) # # 拿到一个管道,transaction=True表示管道内部都是原子性
pi=conn.pipeline(transaction=True) # # 说明是批量命令
pi.multi()
pi.set('xx','xxx')
pi.set('yy','yyy')
pi.execute() redis其他操作
# 其它操作
conn.delete('name1')

# 根据key值模糊查询
print(conn.keys('k*')) # 对redis中的某一个name设置超时时间
exprie(name,time) # # 将多个列表排列,按照从左到右去pop对应列表的元素
print(conn.type('person'))





 
 
 
 
 

redis 基础应用的更多相关文章

  1. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  2. [.net 面向对象程序设计深入](14)Redis——基础

    [.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  3. linux redis基础应用 主从服务器配置

    Redis基础应用 redis是一个开源的可基于内存可持久化的日志型,key-value数据库redis的存储分为内存存储,磁盘存储和log文件三部分配置文件中有三个参数对其进行配置 优势:和memc ...

  4. [.net 面向对象程序设计深入](36)Redis——基础

    [.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  5. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  6. Redis基础用法、高级特性与性能调优以及缓存穿透等分析

     一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...

  7. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  8. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  9. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  10. Redis基础知识点面试手册

    Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...

随机推荐

  1. 【洛谷p1403 】【AHOI2005】约数研究

    (有种失踪人口回归的感觉) 约束研究[传送门] (不过好像没有人注意到我这个蒟蒻) 好的不管它啦 最近学数论比较多,所以可能会有好多好多的数论题???(不存在的) 行吧上算法标签: 数论   数论  ...

  2. 『流畅的Python』第9章笔记_对象

    一.Python风格 以一个二元素向量对象为例 import math from array import array class Vector2d: typecode = 'd' def __ini ...

  3. XXX系统利益相关者分析

    小组成员:白悦,张雪薇,李慧,陶雨洁 目标:实现需求的网上填报,征集. 好处: 1.便于统计 2.节约时间,成本 3.快捷简单易操作 度量标准:填报所用时间,精力,以及需求数据整理的有效性. 利益相关 ...

  4. csu oj 1341 string and arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,……,第N行,从左至右依次记为第1列,第2列,……,第N列. 对于这个矩阵会进行一系列操作,但这些操作只有两类: (1) ...

  5. 【Python】基础知识

    一.基本概念 1.变量与运算符 Python允许给多个变量同时赋值,等号 (=) 右边的值将赋予左边对应位置的变量. # 将a, b, c的值依次赋予b, c, a b, c, a = a, b, c ...

  6. 使用MongoDB数据库(1)(三十五)

    MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有 ...

  7. linux 程序实现后台运行

    先上代码: getopt函数获取参数  -d 控制台控制运行  -D 后天运行  -h 调用show_help函数. 编译命令 gcc -g -W test.c -o test 注意后台运行 ./te ...

  8. Jquery的jqzoom插件的使用(图片放大镜)

    今天学习一下,图片放大镜功能,需要使用插件JQzoom 引入文件 <script type="text/javascript" src="js/jquery.min ...

  9. oracle和sql server中,取前10条数据语法的区别

    在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...

  10. js如何简单实现汉字转成拼音的功能

    最近项目需要一个功能,实现汉字转拼音功能,具体比如说输入一个“你好”,同时带出对应拼音“NiHao”,在此做一下记录 1.首先引入两个文件 <script src="jquery.mi ...