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. Integer to English words leetcode java

    问题描述: Convert a non-negative integer to its english words representation. Given input is guaranteed ...

  2. 外网teamview连接不上服务器teamview的错误: 一直显示正在连接,正在初始化显示参数的

    一.错误 错误:  服务器的TV已打开,外网连接服务器TV,一直显示正在连接,正在初始化显示参数的原因. 二. 分析原因: 1. teamview简介TV 2. 服务器必须要开一个远程端口,意思是必须 ...

  3. 『MXNet』第一弹_基础架构及API

    MXNet是基础,Gluon是封装,两者犹如TensorFlow和Keras,不过得益于动态图机制,两者交互比TensorFlow和Keras要方便得多,其基础操作和pytorch极为相似,但是方便不 ...

  4. LINQ 常用from

    单个form子句string[] values = { "LINQ学习", "LINQ基本语句", "from子句", "单个fr ...

  5. Leetcode 145

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  6. github上fork了别人的项目后,再同步更新别人的提交(转)

    原文地址:github上fork了别人的项目后,再同步更新别人的提交 我从github网站和用git命令两种方式说一下. github网站上操作 打开自己的仓库,进入code下面. 点击new pul ...

  7. 几种常见的开源软件许可协议(GPL, LGPL, Apache License, BSD)

    GPL GPL授予程序接受人以下权利,或称“自由”: * 以任何目的运行此程序的自由 * 以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提) * 再发行复制件的自由 * 改进此程序, ...

  8. Linux中环境变量文件

    一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...

  9. Android Studio build gradle project info 卡主不动解决方法.

    项目里的: build.gradle 依赖 的gradle 版本 在每个项目里 gradle/wrapper/properties/gradle-wrapper.properties 配置文件里 用户 ...

  10. sublime ctags跳转函数使用

    sublime 点击某函数 按F12可以查到相关函数文件 正题: 1.下载ctags客户端文件 http://prdownloads.sourceforge.net/ctags/ctags58.zip ...