一、首先,要下载redis

pip3 install redis

二、连接redis

import redis
#拿到一个redis的链接
conn=redis.Redis('127.0.0.1',6379)
# print(conn.get('name'))

#redis的字符串操作
#ex过期时间(秒),px过期时间(毫秒)
# conn.set('pwd','123456',ex=5)
#nx,如果设置为True,则只有name不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
# conn.set('name','egon',nx=True)
#xx,如果设置为True,则当set操作才执行,值存在才能修改,值不存在,不会设置新值
# conn.set('paa','123456',xx=True)
#设置值,只有name不存在时,执行设置操作(添加),如果存在,不会修改
# conn.setnx('name','xuxu')
#设置值,setex(name,time,value)
# conn.setex('token',5,'hnkjashd')
#设置值,psetex(name,time_ms,value)
#time_ms过期时间(数字毫秒)或timedelta对象

#mset(*args,**kwargs)  批量设置值
# conn.mset({'k1':'v1','k2':'v2'})

#mget(keys)批量获取值
# ret=conn.mget({'k1','k2'})
# print(ret)

#getset(name,value)
#设置新值并获取原来的值

#getrange(key,start,end)
#获取子序列(根据字节获取,非字符)
#参数:
#   name
#   start起始位置(字节)
#   end,结束位置(字节)

#setrange(name,offset,value)
#修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
#参数:
#   offset,字符串的索引,字节
#   value,要设置的值

#strlen(name)
#返回name对应值的字节长度(一个汉字三个字节)

#incr(self,name,amount)
#自增name对应的值,当name不存在时,则创建name=amount,否则,则自增
#参数:
#   name
#   amount自增数(必须是整数)
# print(conn.incr('pw',2))

#decr(self,name,amount=1)
#自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减
#参数:
#   name
#   amount,自减数

#append(key,value)
#在redis name对应的值后面追加内容
#参数:
#   key,redis的name
#   value,要追加的字符串

三、连接池与列表的一些操作

# import redis
#拿到一个redis的连接池
# pool=redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=5)
#从池子中拿一个连接
# conn=redis.Redis(connection_pool=pool)
#这样虽然是从连接池中取连接,但是每次都会建立新的连接池,如果想要同一个连接池,则可以把连接池做成单例

import redis
conn=redis.Redis('127.0.0.1',6379)
# conn.hset('m1','key2','value2')
#redis支持5大数据类型,只支持第一层,也就是说字典的value值,必须是字符串
#如果value值想存字典格式,必须用json转换一下,转成字符串
# conn.hmset('m2',{'key1':'value1','key2':'value2'})

#
# print(conn.hmget('m2','key1','key2'))
# print(conn.hmget('m2',['key1','key2']))

#取出所有的
# print(conn.hgetall('m2'))

# print(conn.hlen('m1'))
# print(conn.hkeys('m2'))
# print(conn.hvals('m2'))
#判断key1是否在m2中
# print(conn.hexists('m2','key1'))
#删除键值对,按key来查询的
# conn.hdel('m2','key1','key2')
# conn.hdel('m2',*['key1','key2'])
#自增,应用场景:统计文章阅读数.key是文章id,value是文章阅读数,有一个阅读者,数字加一,固定一个时间,将数据同步到数据库
# conn.hincrby('m2','key4')

# for i in range(1000):
#     conn.hset('m2','key%s'%i,'value%s'%i)
#指定每次取10条,直到取完
# ret=conn.hscan_iter('m2',count=10)
#当数据量很大的时候,不要用这种方式
#ret=conn.hgetall('m2')
# for i in ret:
#     print(i)

#lpush(name,values)
#在name对应的list中添加元素,每个新的元素都添加到列表的最左边
#如r.lpush('oo',11,22,33),保存顺序为33,22,11
# conn.lpush('l1','11','22','33')
#对应的有rpush
# conn.rpush('l1','x','y','z')
#查看list长度
# print(conn.llen('l1'))

# conn.linsert('l1','before','11','xuxu')
# conn.linsert('l1','after','11','xuxu')

#索引从0开始,第2个值设置成'4444'
# conn.lset('l1',2,'4444')

#*****列表操作,没有getall这个东西,可以通过切片来获取全部
#这个是前闭后闭区间
# print(conn.lrange('l1',0,conn.llen('l1')))
#blpop重点
#删掉一个值,同时可以显示这个值。如果列表中没有值,会一直hang住,实现简单的分布式。
# print(conn.blpop('l1',timeout=3))

#自定义增量迭代
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

四、redis支持的事务

#管道,实现事务操作
#redis对事务的支持其实不是特别好
import redis
pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
coon=redis.Redis(connection_pool=pool)
#拿到一个管道对象
pipe=conn.pipeline(transaction=True)
#开启一次执行多条命令
pipe.multi()
pipe.set('name','lqz')
pipe.set('role','teacher')
pipe.execute()

五、在django中使用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连接配置

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

  6. redis基础之python连接redis(五)

    前言 前面介绍了在数据库命令行直接操作redis,现在学习使用python的redis包来操作redis,本人安装的是redis==2.10.6: 系列文章 redis安装和配置 redis命令行操作 ...

  7. python连接redis sentinel集群

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

  8. Python连接redis时要注意的点

    一.一般连接redis情况 from redis import Redis # 实例化redis对象 rdb = Redis(host='localhost', port=6379, db=0) rd ...

  9. Python 连接Redis两中方式

    一.通过django里设置settings文件连接redis #1.settings添加 CACHES = { "default": { "BACKEND": ...

随机推荐

  1. 除了/etc/init.d/加启动脚本 或者在/etc/rc.local中加启动命令,还可以通过crontab来完成服务器重启后自动启动服务的操作

    @reboot /bin/sh /opt/soft/percona/bin/mysqld_safe --defaults-file=/mnt/perconadata/my.cnf --basedir= ...

  2. mongodb new file allocation failure

    话说那天正在向mongodb中写入数据,突然就蹦出了 new file allocation failure ,以为是数据有错误,就检查了一番,可没问题啊,看着像是mongo自己的问题,于是百度了一番 ...

  3. MyEclipse启动Tomcat缓慢的原因及解决办法

    不知道朋友们是否有一种烦恼:有时候使用MyEclipse启动Tomcat十分缓慢,可能在几分钟前20秒以内,但现在却需要200秒开外:其间内存和CPU都被占用地厉害,而控制台的输出似乎有重复的迹象:而 ...

  4. 多线程局部变量之threading.local()用法

    假如,开了十个线程并且做同样的一件事,他们需要带着自己的数据进来,完成事情后带着自己的数据出去.如果是并发,同时进来,他们的数据就会混乱. 一般情况,我们加锁就可以了,一个人先进来,先加锁,另一个人过 ...

  5. Linux下部署多个Tomcat(完整)

    Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...

  6. vue axios跨域请求,代理设置

    在config下的index.js中的dev下的 proxyTable{}中设置代理 proxyTable: { '/api': { target: 'http://10.0.100.7:8081', ...

  7. ==、===和Object.is()的区别

    ==.===和Object.is()的区别 一. 定义: ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较: ===:恒等,严格比较运算符,不做类型转换,类型不同就是不等: Obj ...

  8. Mac开发博客摘录

    https://blog.csdn.net/wangyouxiang/article/details/17855255 https://www.cocoacontrols.com/controls?p ...

  9. Exception 02 : java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver

    异常名称 java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver 异常详细信息 ...

  10. rtd1296 mtd 设备驱动分析

    mtd 分区一般采用3种方式实现 1.内核写死  mtd_partition 2.u-boot 传参 为了使kernel能够解析mtdparts信息,我们需要将内核中的Device Drivers - ...