前言

前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6;

系列文章

python与redis的交互

  • 安装:

环境:Ubuntu16.04;redis-4.0.6

$ sudo pip redis
  • 测试
$ ipython

import redis    # 出现版本信息,安装成功

redis实例化对象

import redis
r1 = redis.Redis()
r2 = redis.StrictRedis() # redis有上面两个类可以建立连接对象,用法几乎一样,推荐使用StrictRedis. r = redis.StrictRedis(host='localhost', # 默认ip为127.0.0.1
port=6379, # 默认端口6379
db=0, # 默认数据库0
password=None,) # 默认没有密码

redis操作string类型

print(con.set('num', '3'))  # string类型的插入键值对,参数key,value;返回true或False
print(con.setex('name',3,'xiaobai')) # 设置一个有时间的键值对,返回true或false
print(con.setnx('my','hh')) # 设置单个不存在的键值对
print(con.mset({'my':'cai'})) # 设置多个键值对,返回true或false
print(con.msetnx({'you':'tan','my':'wan'})) # 为不存在的键设置值,如果有一个已经存在,整个会失败,返回false
print(con.get('num'))       # 获取键的值,返回二进制的数据
print(con.getrange('name', 0, 2)) # 获取子串,参数key、下标范围
print(con.strlen('name')) # 获取值的长度
print(con.exists('name')) # 是否存在这个键,针对所有的类型
print(con.incr('num'))      # 值自加操作,返回计算后的结果值
print(con.incr('num','23')) # 值加一个整数操作,返回计算后的结果值,
print(con.incrby('num', '5')) # 值加一个整数操作,返回计算后的结果值
print(con.incrbyfloat('num', '3.5')) # 值加一个浮点数操作,返回计算后的结果值
print(con.incrbyfloat('num', '-3.5')) # 值加一个浮点数操作,返回计算后的结果值
print(con.decr('num')) # 值自减操作,返回计算后的结果值
print(con.decr('num', '5')) # 值减一个整数操作,返回计算后的结果值
print(con.append('boy', 'tom')) # 字符串拼接,参数key value,返回当前字符串的长度
print(con.setrange('name', '5', 'hh')) # 字符串替换字符,参数为键、偏移量、值,返回当前字符串的长度
print(con.delete('my','name'))  # 删除多个键值对,获取删除成功的数量

redis操作list类型

print(con.rpush('list', 'v1', 'v2'))  # 从列表的首部插入,参数键、值,值可多个,返回列表的长度
print(con.lpush('list', 'vx')) # 从列表的尾部插入,参数键、值,值可多个,返回列表的长度
con.lset('list',0,20) # 在列表的下标0位置插入20
print(con.lrange('list',0,-1))  # 获取范围内的元素,返回一个列表,原来的列表不变

print(con.lpop('list'))   # 从列表首部弹出一个元素
print(con.rpop('list')) # 从列表尾部弹出一个元素
print(con.blpop('list',3)) # 从列表首部弹出一个元素,在3秒内阻塞等待,默认为0秒;没有获取值返回none
print(con.brpop('list', 3)) # 从列表右端弹出一个元素,在3秒内阻塞等待,默认为0秒
print(con.rpoplpush('list', 'list1')) # 将list最右端的元素移到list1的最左端,返回移动的元素
# 将list最右端的元素移到list1的最左端,返回移动的元素,等待时间3秒,默认0秒
print(con.brpoplpush('list', 'list1', 3))
print(con.ltri('list', 2, -1)) # 剪切列表,返回剪切后的列表,改变了原来的列表

redis操作hash

print(con.hset('fruit','apple','red')) # 设置单个散列键值对,参数name,key,value,返回true或false
print(con.hmset('color', {'blue':'good','green':'bad'})) # 对个散列键值对,返回true或false
print(con.hsetnx('goods', 'color', 'white'))
print(con.hdel('color','blue'))  # 删除散列的某些键值对,至少成功一个返回true,其他返回False
print(con.hget('color', 'green')) # 获取散列的单个值
print(con.hmget('color', 'green', 'blue')) # 获取散列的多个值
print(con.hkeys('color')) # 获取散列的所有的键
print(con.hvals('color')) # 获取散列的所有的值
print(con.hgetall('color')) # 获取散列的所有的键值对,返回一个二进制编码的字典
print(con.hexists('color','red')) # 判断一个散列是否存在某个键,返回true或False
print(con.hstrlen('color', 'blue')) # 获取值字符串的长度,返回一个数字 print(con.hlen('color')) # 获取该散列的键值对数量
print(con.hincrby('color', 'blue', 3)) # 将散列的值加一个整数,默认加1
print(con.hincrbyfloat('color', 'blue', 3.5)) # 加一个浮点数,默认为1.0

redis操作集合

print(con.sadd('name', 'a', 'b'))  # 添加元素,返回添加的个数
print(con.srem('name','a'))  # 移除元素,返回移除元素的数量
print(con.spop('name')) # 随机的移除一个元素
print(con.smove('name','name1','bb')) # 将bb从name移到name1,如果name1不存在,创建;返回true或false
print(con.smembers('name'))  # 返回集合所有的元素,以字典的形式
print(con.scard('name')) # 返回集合元素的个数
print(con.sismember('name','b')) # 查看元素是否在集合中,返回true或false

其他redis函数

con.flushdb() # 清除当前数据库
con.flushall() # 清空当前redis con.expire('name',3) # 单位为秒,为键设置过期时间
con.time() # 查看服务器时间,返回时间戳和当前已过去的微秒数
con.ttl(key) # 查看键还有多少生存期,时间单位为秒
con.keys() # 查看所有的键,默认参数为'*'
  • 按命令行的方式写redis
con.execute_command('SET','my', 'hhhh')
# 第一个参数是命令操作,如get,hget,set等;

管道

管道可以缓存命令,减少客户端与redis-server交互的次数

# 创建一个管道值
pipe = con.pipeline()
pipe.get('name')
pipe.set('name','xiao')
# 提交
pipe.execute()

参考

redis基础之python连接redis(五)的更多相关文章

  1. python连接redis,redis集群

    python连接redis: import redis r = redis.Redis(host='192.168.50.181',port=6002) r.set('user_phone_14900 ...

  2. python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...

  3. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

  4. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

  5. Python 连接 redis 模块

    redis 模块使用可以分类为: 连接方式 连接池 操作 String操作 Hash操作 List操作 Set操作 Sort Set操作 管道 发布订阅 (1)操作模式 redis提供两个类Redis ...

  6. Python连接Redis连接配置

    1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...

  7. python连接redis

    一.首先,要下载redis pip3 install redis 二.连接redis import redis #拿到一个redis的链接 conn=redis.Redis('127.0.0.1',6 ...

  8. python连接redis sentinel集群

    安装 python redis 客户端 pip install redis #!/usr/bin/env python # -*- coding:utf-8 -*- #!/usr/bin/env py ...

  9. 【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"

    问题描述 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connecti ...

随机推荐

  1. 动态IP或无公网IP时外网訪问内网ORACLE数据库

    ORACLE数据库是应用最多的一个数据库.一般项目应用.将ORACLE部署在内网,内网调用,及运维都仅仅能是内网完毕. 假设ORACLE主机或所在局域网没有固定公网IP,又想在外网对ORACLE进行訪 ...

  2. MHDD修复硬盘坏道

    2种修复的方法,本人已经尝试过,非常管用! 1.先按SHIFT+F3扫描硬盘连接并选择,按F4键,先用一般模式扫一遍,再用高级模式扫一变,具体方法是选择LBA模式,remap项OFF,Loop the ...

  3. 【Linux】数组与关联数组

    数组 数组的定义: variable=(arg1 arg2 arg3 -) 中间用空格分开,数组的下标从0开始 1.获取下标为n的元素 variable[n] 不存在数组溢出的情况,如果下标n> ...

  4. JS获取浏览器高宽度,屏幕分辨率和一些定位空隙等

    IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.d ...

  5. windows下编辑的shell复制到linux无法执行

    是因为格式不对 可用vim编辑器转换格式 在vim中执行命令: set ff=unix 设置打开方式为unix

  6. 微信小程序的零食商城

    概述 这是一个微信小程序的商城应用,功能包括了首页.分类.购物车.个人中心.商品列表.商品详情.订单.地址管理等 详细 代码下载:http://www.demodashi.com/demo/10353 ...

  7. Android网络开发之基本介绍

    Android平台浏览器采用WebKit引擎,名为ChormeLite,拥有强大扩展特性,每个开发者都可以编写自己的插件. 目前,Android平台有3种网络接口可以使用,分别是:java.net, ...

  8. 用zd1211+Ubuntu 10.04实现的AP

    [日期:2010-06-24]   zd1211 在Ubuntu 10.04 LTS上的master mode 的问题解决之后,理论上就可以把zd1211 USB网卡用来做一个AP了,实际上还有几个问 ...

  9. BIND9源码分析之acl 的实现

    BIND配置中一大堆一大堆的acl,什么allow-query, allow-recursion, allow-update还有view的match-clients等等等等. acl中的主要存储的就是 ...

  10. iOS实现在webview页面内点击链接,跳转指定App

    早上和UI刚谈到这个需求,然后自己试了一下,发现还是蛮简单的,记录一下: 思路分析: iOS内应用之间跳转都会用到 URL Schemes这个东西,简单的讲,这个就是用来定义app身份的一个id识别, ...