Python访问Redis的详细操作

1.连接

测试连接是否成功:

import redis
r = redis.Redis(host='192.168.136.102', port=6379, db=0,decode_responses=True)
r.set('foo', 'bar')
print(r.get('foo'))
del r

redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。

redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。

import redis   # 导入redis 模块
r = redis.Redis(host='192.168.136.102', port=6379, decode_responses=True)
r.set('name', 'runoob')  # 设置 name 对应的值
print(r['name'])
print(r.get('name'))  # 取出键 name 对应的值
print(type(r.get('name')))  # 查看类型
del r

连接池

redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。
默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池。

import redis    # 导入redis 模块
pool = redis.ConnectionPool(host='192.168.136.102', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.set('name', 'runoob')  # 设置 name 对应的值
print(r.get('name'))  # 取出键 name 对应的值

对比

2.String字符串

String使用场景:
1、用redis当缓存层来加速读写性能降低后端的压力
2、计数器
3、时间内限制请求次数

1.String set 设置单个键值
set(name, value, ex=None, px=None, nx=False, xx=False)
ex:过期时间(秒),时间到了后redis会自动删除
px:过期时间(毫秒),时间到了后redis会自动删除。ex、px二选一即可
nx:如果设置为True,则只有name不存在时,当前set操作才执行
xx:如果设置为True,则只有name存在时,当前set操作才执行

r.set('name', 'zhangsan',ex=3)
r.set('name', 'lisi',nx=True)  #如果设置为True,则只有name不存在时,当前set操作才执行
r.set('name', 'wangwu',xx=True)  #如果设置为True,则只有name存在时,当前set操作才执行

2.String get 获取单个值

v = r.get('name')
print(v)

3.String mset 设置多个键值
mset(*args, **kwargs)

name_dict = {
    'name_1' : 'zhangsan',
    'name_2' : 'lisi'
}
r.mset(name_dict)

4.String mget 获取多个值

mget(keys, *args)
r.mget('name_1', 'name_2')

5.String setrange 根据索引修改某个键的value值
setrange(name, offset, value)
返回值为:修改后的字符串长度
name:键,所给不存在时自动添加
offset:偏移量,以0开始
value:修改的字符或字符串,字符串时以offset向后顺延

length = r.setrange('name_2', 1, 'zhihu')
print(length)

6.String getrange 根据索引获取某个键的部分value值
若所给的键不存在时,返回空值 b''
getrange(key, start, end)

v = r.getrange('name_1', 0, 2)

7.String strlen 获取value的长度
strlen(name)
所给的键不存在时,返回值为0

length = r.strlen('name_2')

8.String append value后面追加
append(key, value)
若所给的键不存在,则设置新值,返回值为修改后的字符串的长度

length = r.append('name_1', '666')

3.列表

1.lpush(key , value) 将一个或多个值 value 插入到列表 key 的表头

 r.lpush('list', 'a', 'b', 'c', 'd')

2.rpush(key , value) 将一个或多个值 value 插入到列表 key 的表尾

r.rpush('rlist', 'a', 'b', 'c', 'd')

3.llen key 返回列表 key 的长度

 r.llen('list')

4.lrem key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素

r.lrem('list',2, 'b')

4.集合

1.sadd(name,values) 向对应的集合中添加元素

r.sadd("set1", 33, 44, 55, 66) 

2.scard(name)
获取name对应的集合中元素个数

r.scard('set1')

3.srandmember key [count] 返回集合中的 1 或 count 个随机元素

r.srandmember("set1") 

4.spop key 移除并返回集合中的一个随机元素获取name对应的集合中元素个数

r.spop('set1')

5.smove source destination member 将 member 元素从 source 集合移动到 destination 集合

  r.smove('set1', 'set2', 66)

5.哈希

1.hmset key field value [field value …]同时将多个 field-value (域-值)对设置到哈希表 key 中

r.hmset('zhangsan',{'name':'zhangsan','age':20,'tel':123456})

2.Hash hmget 获取哈希中多个键值对

hmget(name, keys, *args)

返回值:值的列表 list 形如: [‘1', ‘123'] <class ‘list'>

r.hmget('zhangsan', ['sex', 'tel'])

3.Hash hget 获取指定key的值
hget(name, key)

r.hget('zhangsan', 'tel')

4.Hash hgetall 获取哈希中所有的键值对
hgetall(name)
返回值:dict类型

r.hgetall('zhangsan')

6.有序集合

1.Zset zadd 有序集合中添加元素
zadd(name, *args, **kwargs)
添加元素时需指定元素的分数
返回值:返回添加的个数

r.zadd('myzset', {'a': 3, 'b': 4,'c':5})
r.zadd('myzset', 'a', 3, 'b', 4,'c',5})  #不同版本

2.Zset zcard 返回有序集合中元素个数
zcard(name)

v = r.zcard('myzset')

3.Zset zscore 返回有序集合中指定某个值的分数
zscore(name, value)
返回值:float 类型的分数;形如: -5.0 <class ‘float'>

v = r.zscore('myzset', ‘a')

4.Zset zincrby 增加有序集合中某个值的分数
zincrby(name, value, amount=1)
value:若存在,则增加其amount分数;若不存在,则增加新值以及对应的分数
amount:增加的值,可以为负数
返回值:增加后的分数 float类型 ;

v = r.zincrby('myzset',1,'a')

5.Zset zrevrange 返回有序集合分数排序的一段数据
zrevrange(name, start, end, withscores=False, score_cast_func=float)
name:redis的name
start:有序集合索引起始位置(非分数)
end:有序集合索引结束位置(非分数)
withscores:是否获取元素的分数,默认只获取元素的值
score_cast_func:对分数进行数据转换的函数
返回值:list类型

r.zadd('myzset1', {'a': 4, 'b': 2,'c':3,'d':6,'e':1,'f':9})
def double(num):
    return float(num)*float(num)
print(r.zrevrange('myzset1',0,3,withscores=True))
print(r.zrevrange('myzset1',0,3,withscores=True,score_cast_func=double))

以上就是Python访问Redis的详细内容,更多关于Python访问Redis的资料请关注我们其它相关文章!

(0)

相关推荐

  • python使用pipeline批量读写redis的方法

    用了很久的redis了.随着业务的要求越来越高.对redis的读写速度要求也越来越高.正好最近有个需求(需要在秒级取值1000+的数据),如果对于传统的单词取值,循环取值,消耗实在是大,有小伙伴可能考虑到多线程,但这并不是最好的解决方案,这里考虑到了redis特有的功能pipeline管道功能. 下面就更大家演示一下pipeline在python环境下的使用情况. 1.插入数据 >>> import redis >>> conn = redis.Redis(host='

  • Python获取Redis所有Key以及内容的方法

    一.获取所有Key # -*- encoding: UTF-8 -*- __author__ = "Sky" import redis pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) keys = r.keys() print type(keys) print keys 运行结果: <type 'list'> ['fa

  • Python连接Redis的基本配置方法

    在Linux系统下Python连接Redis的基本配置方法具体操作步骤 系统环境: OS:Oracle Linux Enterprise 5.6 Redis:redis-2.6.8 Python:Python-2.7.3 redis的python包版本:redis-2.7.2.tar 前提条件: 1.确保Redis已成功安装并且正确配置,参考文档 主从配置文档: //www.jb51.net/article/147397.htm 2.确保Python环境已成功配置,参考文档 https://ww

  • python中redis查看剩余过期时间及用正则通配符批量删除key的方法

    具体代码如下所示: # -*- coding: utf-8 -*- import redis import datetime ''' # 1. redis设置过期时间的两种方式 expire函数设置过期时间为10秒.10秒后,ex1将会失效 expireat设置一个具体的时间,15年9月8日15点19分10秒,过了这个时间,ex2将失效 如果设置过期时间成功会返回True,反之返回False ''' pool = redis.ConnectionPool(host='192.168.3.128'

  • python 通过SSHTunnelForwarder隧道连接redis的方法

    背景:我司Redis服务器使用的亚马逊服务,本地需要通过跳板机,然后才有权限访问Redis服务. 连接原理:使用SSHTunnelForwarder模块,通过本地22端口ssh到跳板机,然后本地开启一个转发端口给跳板机远程Redis服务使用. 两种思路: 1.通过SSHTunnelForwarder,paramiko模块,先ssh到跳板机,然后在跳板机上(或者内部服务器上),获取到权限,然后远程Redis. 2.使用SSHTunnelForwarder模块,通过本地22端口ssh到跳板机,然后本

  • Python操作redis实例小结【String、Hash、List、Set等】

    本文实例总结了Python操作redis方法.分享给大家供大家参考,具体如下: 这里介绍详细使用 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'zhangsan') '''参数: set(name, value, ex=None, px=None, nx=False, xx=False) ex,过期时间(秒) px,过期时间(毫秒) nx,如果设

  • python redis 删除key脚本的实例

    单机模式 代码片段 安装 pip install redis import redis r = redis.Redis(host='192.168.1.3', port=6188,db=0,decode_responses=True) list_keys = r.keys("DEMO_xx_*") for key in list_keys: r.delete(key) 集群模式 代码片段 安装 pip install redis-py-cluster from rediscluster

  • Python访问Redis的详细操作

    1.连接 测试连接是否成功: import redis r = redis.Redis(host='192.168.136.102', port=6379, db=0,decode_responses=True) r.set('foo', 'bar') print(r.get('foo')) del r redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串. redis 提供两个类 Redis 和 StrictRedis, StrictRedis

  • python 实现 redis 数据库的操作

    目录 一.安装 二.连接 三.string基本命令 四.hash基本命令 五.list基本命令 六.set基本命令 七.zset基本命令 八.其他通用命令 九.管道命令 一.安装 redis 是一个 Key-Value 数据库 Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型 pip install redis 二.连接 import redis # 方式一 r = redis.StrictRedis(host='loc

  • Python中切片的详细操作篇

    目录 Python中的切片知识. 一.切片的索引方式 二.索引的一般方式 三. 切片操作的 详细切法 1.切割单个值 2.切割完整对象 3.当start和end全部为正数时. 4.当start和end全部取负数的时. 5.start和end是正负混合情况时 6.连续的切片操作 7.切片中的三个参数为表达式 8.切片可以操作其他的对象 补充:扩展切片 总结: Python中的切片知识. 在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法

  • Python读写Redis数据库操作示例

    使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库.比如,我们插入一条数据,如下: 复制代码 代码如下: import redis class Database:      def __init__(self):          self.host = 'localhost'          self.port = 6379 def write(self,website,city,year,month,day,deal_number):         

  • python访问hdfs的操作

    pip install hdfs python 读取hdfs目录或文件 import hdfs client =hdfs.Client("http://10.10.1.4:50070") fileDir="/user/hive/warehouse/house.db/dm_house/dt=201800909" try: status=client.status(fileDir,False) if status: print (status) rst=client.d

  • Python 抓取数据存储到Redis中的操作

    redis是一个key-value存储结构.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set 有序集合)和hash(哈希类型),数据存储如下图分析 为了分别为ID存入多个键值对,此次仅对Hash数据进行操作,例子如下 import os,sys import requests import bs4 import redis #连接Redis r = redis.Redis(host='127

  • RedisTemplate访问Redis的更好方法

    目录 开始准备 RedisTemplate JPA Repository Cache 总结 开始准备 开始之前我们需要有Redis安装,我们采用本机Docker运行Redis, 主要命令如下 docker pull redis docker run --name my_redis -d -p 6379:6379 redis docker exec -it my_redis bash redis-cli 前面两个命令是启动redis docker, 后两个是连接到docker, 在使用redis-

  • Python与Redis的连接教程

    今天在写zabbix storm job监控脚本的时候用到了python的redis模块,之前也有用过,但是没有过多的了解,今天看了下相关的api和源码,看到有ConnectionPool的实现,这里简单说下. 在ConnectionPool之前,如果需要连接redis,我都是用StrictRedis这个类,在源码中可以看到这个类的具体解释:   redis.StrictRedis Implementation of the Redis protocol.This abstract class

  • Python使用Redis实现作业调度系统(超简单)

    概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器. Redis 优势 异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录. 支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集

  • redis3.2配置文件redis.conf详细说明

    Redis启动的时候,可以指定配置文件,如下: /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf Redis.conf文件内容详细说明: # 默认redis不是以后台进程的方式启动,如果需要在后台运行,需要将这个值设置成yes # 以后台方式启动的时候,redis会写入默认的进程文件/var/run/redis.pid daemonize yes # redis启动的进程路径 pidfile/var/run/red

随机推荐