python对reids的操作增删改查

#!/usr/bin/env python
# coding=utf-8
import time

import redis


# 建议redis版本pip install redis==2.10.6
class Redis_Test:

    def __init__(self):
        
        # 连接方法一
        # self.redpool = redis.ConnectionPool(host='127.0.0.1', port=6379)
        # self.db = redis.Redis()
        # 连接方法二
        self.redpool = redis.Redis(host='127.0.0.1', port=6379)

    # 添加
    def add_redis(self):
        # 存入字符串
        # rul = self.redpool.set('age', 2, 10)  # 插入单个string类型的键值,有这条数据则会覆盖,
        # rul = self.redpool.set('age', 3, 10)  # 有效时间10秒,有数据则覆盖
        # print(rul)
        # decode()把二进制文本转换一下
        # print(self.redpool.get('age').decode())     # 取出单条string类型的键值数据
        # self.redpool.setnx('name', 'lala')  # setnx:没有才添加,有就不变
        # print(self.redpool.get('name'))
        # rul = self.redpool.mset({'k1': 'v2', 'k2': 'v3'})  # mset批量插入,有则覆盖
        # print(rul, self.redpool.get('k1'))  # 取的时候要加引号
        # self.redpool.incr('age', 3)  # 数字自加,每次执行,都在原来的基础上增加3
        # print(self.redpool.get('age'))

        # hash类型存入
        # self.redpool.hset('info', 'tel', '120')  # hset:name , key , val 三个参数      给一个name,添加一个键值
        # self.redpool.hmset('zhangsan', {'tel': 110, 'addr': 'beijing'})  # hmset:给某个name设置多个键值对
        # self.redpool.hmset('zhangsan', {'hobby': 'nicai', 'sex': 'men', 'addr': 'hebei'})  # 再次添加键值时,有则覆盖
        # self.redpool.expire('zhangsan', 5)  # expire :设置有效时间5秒

        # 列表添加数据
        # self.redpool.lpush('students', 'zhangsan', 'lisi', 'wangmazi')  # lpush:存储顺序相反【'wangmazi','lisi','zhangsan'】
        print(self.redpool.rpush('class', '1班', '2班', '3班'))  # rpush:正推
        # self.redpool.linsert('students', 'BEFORE', 'lisi', 'hehe')  # 在lisi前面插入一个hehe
        # self.redpool.lpush('class', '1班', '1班')  # 可以添加多个重复值
        # print(self.redpool.lrange('class', 0, self.redpool.llen('class')))

    # 删除
    def del_redis(self):
        # 删除键值字符串
        # self.redpool.delete('age')  # 删除某个键值对
        # self.redpool.flushall()  # 清空
        # 删除hash
        # print(self.redpool.hdel('zhangsan', 'sex'))    # hdel:删除name中的某个键值,删除成功返回1,如果没有返回0
        # self.redpool.delete('zhangsan')  # 删除某个
        # self.redpool.delete('k1', 'k2')  # 删除多个

        # 删除列表
        # self.redpool.lrem('class', '1班', num=2)  # 删除name中对应的值,可指定个数
        # print(self.redpool.lpop('class').decode())  # 删除第一个值并且有返回值
        self.redpool.ltrim('class', 1, 4)  # 删除索引小于1,大于4的元素

    # 修改
    def up_redis(self):
        # ret = self.redpool.getset('k1', 'vvv2')  # getset:获取原来的值,设置新值
        # print(ret)
        # print(self.redpool.get('k1'))
        # print(self.redpool.getrange('name', 1, 3))  # getrange:对取出的值进行切片,顾头顾尾
        # self.redpool.setrange('name', 2, 'll')  # 将name对应的值从索引2位置替换,写几位就替换几位
        # print(self.redpool.get('name'))
        # self.redpool.append('name', '你好')  # 向字符串后追加
        # print(self.redpool.get('name').decode())

        #hash
        # self.redpool.hmset('zhangsan', {'hobby': 'nicai', 'sex': 'men', 'addr': 'hebei'})  # 再次添加键值时,有则覆盖

        # 列表修改
        self.redpool.lset('students', 1, 'xiaoming')  # 对某一个位置重新设值
        print(self.redpool.lrange('students', 0, 3))  # 再次查看该位置的值会变

    # 查询
    def find_redis(self):
        # 字符串查询
        # ret = self.redpool.get('name')  # get :通过键取字符串,获取不到,得到None
        # print(ret.decode())
        # ret = self.redpool.mget('k1', 'k2', 'name')    # mget:批量取,返回3个值
        # for r in ret:
        #     print(r.decode())
        # print(self.redpool.strlen('name'))  # 查看字节长度,注意字节长度和编码有关
        # print(self.redpool.get('name').decode())  # 解码成字符串,utf8编码格式,如果有中文,以gbk解码会乱码
        # print(self.redpool.keys())  # 查看都有哪些键
        # print(self.redpool.keys('k*'))  # 查看所有以k开头的键
        # print(self.redpool.mget('k1', 'k2', 'name', 'age'))

        # hash查询
        # print(self.redpool.hget('info', 'tel'))  # hget:name,key 两个参数       获取某一个name中的某一个键的值
        # print(self.redpool.hmget('zhangsan', ['tel', 'sex', 'addr']))  # hmget:获取某个name中的某些键对应的值
        # print(self.redpool.hgetall('zhangsan'))  # hgetall:查看该name对应的所有键值
        # print(self.redpool.hlen('zhangsan'))  # hlen:查看name对应的键值个数
        # print(self.redpool.hkeys('zhangsan'))  # hkeys:查看name对应的所有键,返回列表
        # print(self.redpool.hvals('zhangsan'))  # hvals:查看name对应的所有值,返回列表
        # print(self.redpool.hexists('zhangsan', 'tel'))  # hexists:判断name有没有这个键,返回布尔值
        # print(self.redpool.exists('zhangsan'))  # exists:判断这个name在不在redis里面
        # for item in self.redpool.hscan_iter('zhangsan'):  # 一段一段取,redis默认数据超过五百多条时才会做分片处理
        #     print(item)

        # 列表查询
        # print(self.redpool.llen('students'))  # llen:查看name对应的list有多少个值
        # print(self.redpool.lrange('students', 0, -1))  # 查看name对应的list值,从0查到3,一般要全查的话先查看长度,再用长度查
        print([i.decode() for i in self.redpool.lrange('class', 0, self.redpool.llen('class') - 1)])  # 减不减1都行,超出了也不报错,也是全查
        print(self.redpool.lindex('class', 1).decode())  # 查看对应索引值的元素


if __name__ == '__main__':
    mdb = Redis_Test()
    # mdb.add_redis()
    # mdb.del_redis()
    # mdb.up_redis()
    mdb.find_redis()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值