前言

前面介绍了在数据库命令行直接操作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. Android IO存储总结

    1 前言  android设备的存储特点:  分内存和SD卡两种存储设备,且android设备存储空间小,且系统碎片化等情况.     SD卡:老版本的android设备 不存在内置SD        ...

  2. python手记(42)

    #!/usr/bin/env python #-*- coding: utf-8 -*- #code:myhaspl@qq.com import cv2 import numpy as np fn1= ...

  3. Eclipse 如何导入web项目

      Eclipse 如何导入web项目 CreateTime--2018年3月8日09:07:16 Author:Marydon 方法一:推荐使用 1.将web项目手动拷贝到Eclipse的工作空间下 ...

  4. 基于jquery ui修改的不依赖第三方的背景透明的弹出div

    效果图: 代码: <!doctype html> <html> <head> <meta charset="utf-8"> < ...

  5. Eureka集群试验的一点总结

    先简单描述一下试验: 试验在一台机器上进行,假设有host文件中配置了以下内容 127.0.0.1 left 127.0.0.1 center 127.0.0.1 right 试验中搭建三个注册中心实 ...

  6. SXi5.5不识别硬件驱动的光盘定制

    SXi5.5不识别硬件驱动的光盘定制~~RealTek8111E,Intel217V,Z97 AHCI [复制链接]     gmx168 电梯直达 1#   发表于 2014-9-23 17:06 ...

  7. 基于 Vue BootStrap的迷你Chrome插件

    代码地址如下:http://www.demodashi.com/demo/14306.html 安装 安装 Visual Studio Code 和Chrome, 自行FQ 详细安装这里略过 安装包管 ...

  8. iOS同一项目多个Target的快速实现方法 - 两种使用场景详解

    我们项目中,默认建好是只有一个target的,但是,一些场景中,多target能帮助我们更好的使用项目. 场景1: 同一项目,一般会分不同环境:开发环境.测试环境.正式(生产)环境. 这就涉及到一个请 ...

  9. leetcode693:Binary Number with Alternating Bits

    判断一个数字的二进制形式是不是01交替的. 如5=101,返回True 如7=111,返回False 这道题可以用位运算来实现.看到01交替,就想到移位运算.如果n是01交替的,移位之后进行异或,则得 ...

  10. 【Linux】排序命令uniq

    很多时候,我们都会去计算一次数据里头的相同型态的数据总数,举例来说, 使用 last 可以查得这个月份有登陆主机者的身份.那么我可以针对每个使用者查出他们的总登陆次数吗? 此时就得要排序与计算之类的命 ...