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. 『MXNet』第六弹_Gluon性能提升

    一.符号式编程 1.命令式编程和符号式编程 命令式: def add(a, b): return a + b def fancy_func(a, b, c, d): e = add(a, b) f = ...

  2. 【Oracle】【3】字段自增长(+1)

    业务场景——解决方案 1,每插入一条数据,其排序字段要增长1 —— Service层查询出最大值,再+1(参考博客的方法是触发器) 2,子表插入一条数据,主表某字段+1 —— where A.ID = ...

  3. [luogu P3382] 三分法

    [luogu P3382] 三分法 题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减.试求出x的值. 输入输出格式 输入格式: 第一行一次 ...

  4. [LightOJ 1287] Where to Run

    Where to Run Last night you robbed a bank but couldn't escape and when you just got outside today, t ...

  5. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  6. vue2.0 transition 手风琴

    <div class="food"> <button @click="show=!show">show</button> & ...

  7. SpringBoot启动器

    pom.xml文件1.父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId ...

  8. oracle的case when的用法和decode函数的用法

    oracle中,我们要使用case when时,要怎样使用 如下测试数据,我要把ClassId 的1变成一班,2变成二班,3变成三班,那sql要怎样写呢? 1.case when的用法 -- orac ...

  9. matlab画图变粗脚本

    http://blog.sina.com.cn/s/blog_708637950100uag0.html figure_FontSize=18;set(get(gca,'XLabel'),'FontS ...

  10. dl简单模板,无pretraining过程

    layer_dimensions = [11 22 33 22 11]'; ld_size = size(layer_dimensions , 1); % what is deal [x rx dx ...