记录redis中string和list一些常用方法的练习

本文详细介绍了 Redis 中 String 和 List 的常用操作,包括 set、get、mset、hset、hget、lpush、rpush、lpop、rpop 等方法,并通过实例演示了各种参数的使用,帮助读者深入理解 Redis 的数据存储和操作。
摘要由CSDN通过智能技术生成

记录redis中string和list一些常用方法的练习:

import redis
import time

def connectRedis():
    #decode_responses=True使数据避免为byte格式b'xxx', db=index:可以用来切换redis的不同数据库。
    pool = redis.ConnectionPool(host='127.0.0.1',port=6379, decode_responses=True,db=1)
    r = redis.Redis(connection_pool=pool)
    return r

if __name__ == "__main__":
    '''
    链接:
    1、关于redis持久化的问题:
    查看redis持久化的一些信息:https://www.yzlfxy.com/system/redis/326151.html
    redis持久化配置的两种方式:
    https://www.cnblogs.com/xuwenjin/p/9876432.html
    https://www.cnblogs.com/wdliu/p/9377278.html
    https://blog.csdn.net/socct_yj/article/details/103042898



    '''

    '''
    疑问:
    为什么redis断开连接或者重启,数据不消失?并未开启持久化
    '''


    '''
    CMD命令:
        开启redis,redis目录下cmd执行:          redis-server.exe redis.windows.conf
        在redis目录下打开一个新的cmd,连接redis进行cmd操作:      redis-cli.exe -h 127.0.0.1 -p 6379
        查询当前redis数据库存储的数据: keys *
        切换redis数据库,index为要切换的数据库索引,默认配置16个数据库:  select index

    '''

    '''
    基本命令String:
    set(name, value, ex=None, px=None, nx=False, xx=False)
    在 Redis 中设置值,默认,不存在则创建,存在则修改。
    参数:
    ex - 过期时间(秒)
    px - 过期时间(毫秒)
    nx - 如果设置为True,则只有name不存在时,当前set操作才执行
    xx - 如果设置为True,则只有name存在时,当前set操作才执行
    '''
    
    '''set(name, value, ex=None, px=None, nx=False, xx=False)不同参数的使用'''
    # r = connectRedis()
    # r.set('name','Jack',ex=3)       #ex为过期时间
    # print(r.get('name'))
    # # time.sleep(4)
    # # print(r.get('name'))        #None

    # r.set('name','Tom',nx=True,ex=3)
    # print(r.get('name'))            #name已存在,不执行set,输出为jack

    # r.set('name','Locky',xx=True,ex=3)
    # print(r.get('name'))            #name已存在,执行set,输出为Locky
    # time.sleep(4)
    # r.set('name','Carry',xx=True,ex=3)
    # print(r.get('name'))            #name不存在,不执行set,输出为None

    # '''mset()一次性设置多个键值对,但无法设置过期时间'''
    # #批量设置值
    # r.mset({'k1':'v1', 'k2':'v2'})
    # print(r.mget("k1","k2"))

    # keydict = {'key1':325,'key2':'age'}
    # r.mset(keydict)
    # keylist = ['key1','key2']
    # #批量获取
    # print(r.mget(keylist))           #返回['325', 'age']
    # print(r.mget('key1','key2'))     #返回['325', 'age']



    '''
    基本命令hash:
    hset(name, key, value)
    name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

    参数:

    name - redis的name
    key - name对应的hash中的key
    value - name对应的hash中的value
    '''

    # r=connectRedis()
    # r.hset("hash1", "k1", "v1")
    # r.hset('hash1', 'k2', 'v2')
    # print(r.hkeys('hash1'))             #hkeys(name):取出hash中所有的key
    # print(r.hget('hash1', 'k1'))        #hget(name, key):单个取hash得key对应的值
    # print(r.hmget('hash1','k1','k2'))   #hmget(name, keys): 多个取hash的key对应的值

    # r.hsetnx("hash1", "k2", 'v3')       #hsetnx(name, key, value),只有在key不存在时,新建!不更新已经有key
    # print(r.hget("hash1","k2"))

    #批量增加和取出
    '''
    hmset(name, mapping)
    在name对应的hash中批量设置键值对

    参数:

    name - redis的name
    mapping - 字典,如:{'k1':'v1', 'k2': 'v2'}
    '''
    # r=connectRedis()
    # r.hmset("hash2",{"k2":"v2","k3":"v3"})      #批量设置1
    # print(r.hget("hash2", "k2"))                #取单个hash的key所对应的值,str
    # hashDict = {"key1":"cc","key2":'bb'}
    # r.hmset('hash2', hashDict)                  #批量设置2
    # print(r.hmget('hash2',"k2","k3","key1"))    #批量取多个key的值,返回list
    # print(r.hmget('hash2', ['k2','k3','key1'])) #批量取多个key的值,返回list

    # print(r.hgetall('hash2'))                   #取出所有键值对,返回dict
    # print(r.hlen('hash2'))                      #获取name对应的hash中键值对的个数
    # print(r.hkeys("hash2"))                     #hkeys(name):得到所有的keys,返回List
    # print(r.hvals("hash2"))                     #hvals(name):得到所有的value,返回List
    # print(r.hexists('hash2',"k2"))              #hexists(name, key):判断key是否存在,返回True或False

    # print(r.hdel('hash2','k2'))                 #将name对应的hash中指定key的键值对删除
    # print(r.hdel('hash2','k3','key1'))          #hdel(name,*keys),删除多个
    # print(r.hgetall('hash2'))

    '''
    redis基本命令list:
    '''

    '''1.增加(类似于list的append,只是这里是从左边新增加)--没有就新建。
    在name对应的list中添加元素,每个新的元素都添加到列表的最左边:lpush(name,values)'''
    # r = connectRedis()
    # r.lpush("list1", 11, 22, 33)        #lpush(name,values),保存顺序为['33','22','11']
    # r.lpush('list1', 10)                #会添加到列表的最左边:['10','33','22','11']
    # print(r.lrange('list1', 0, -1))     #lrange(name,start,end),切片取值: 0表示第一个元素,-1表示最后一个元素

    '''2.增加(从右边增加)--没有就新建:rpush(name,values)'''
    # r = connectRedis()
    # r.rpush("list2", 44,45,66)          #rpush(name,values), 在列表的右边,依次添加。
    # print(r.llen("list2"))              #列表长度
    # print(r.lrange("list2",0,-1))

    '''3.往已有的name的列表的左边添加一个元素,没有的话就无法创建:lpushx(name,value)'''
    # r = connectRedis()
    # r.lpushx("list10",10)                 #list10不存在
    # print(r.llen('list10'))               #0
    # print(r.lrange('list10',0, -1))       #[]

    # r.lpushx('list2',77)                  #list2存在,添加新元素
    # print(r.lrange('list2', 0, -1))       #添加到左侧

    '''4.往已经有的name的列表的右边添加一个元素,没有的话无法创建:rpushx(name,value)'''
    # r = connectRedis()
    # r.rpushx("list10", 10)              #list10不存在
    # print(r.llen('list10'))             #0
    # print(r.lrange('list10',0,-1))      #[]

    # r.rpushx("list2",99)                #这里的list2存在
    # print(r.lrange('list2',0,-1))       #成功在右侧添加了新元素

    '''
    5.新增(固定索引号位置插入元素)

    linsert(name, where, refvalue, value))
    在name对应的列表的某一个值前或后插入一个新值

    参数:

    name - redis的name
    where - BEFORE或AFTER
    refvalue - 标杆值,即:在它前后插入数据
    value - 要插入的数据
    '''

    # r = connectRedis()
    # print(r.lrange('list2',0,-1))
    # r.linsert('list2','before','44', '74')      #往左边出现的第一个元素'44'前添加'74'
    # print(r.lrange('list2',0,-1))

    '''
    6.修改(指定索引号进行修改)

    r.lset(name, index, value)
    对name对应的list中的某一个索引位置重新赋值

    参数:

    name - redis的name
    index - list的索引位置
    value - 要设置的值
    '''
    # r = connectRedis()
    # r.lset('list2', 0, -11)                 #把索引号为0的元素修改成-11
    # print(r.lrange('list2',0,-1))

    '''
    7.删除(指定值进行删除):注意:菜鸟教程的此部分有错。
    r.lrem(name, count, value)
    在name对应的list中删除指定的值

    参数:

    name - redis的name
    count=0,删除列表中所有的指定值;
    count=2 - 从前到后,删除2个, num=1,从前到后,删除左边第1个
    count=-2 - 从后向前,删除2个
    value - 要删除的值
    '''

    # r = connectRedis()
    # print(r.lrange('list2',0,-1))
    # r.lrem('list2',1,"74")                   #将列表左边第一次出现的“74
    # print(r.lrange('list2', 0,-1))
    # r.lrem('list2', -1, "66")                #将列表中右边第一次出现的'11'删除
    # print(r.lrange('list2', 0, -1))
    # r.lrem('list2',0, "34")                  #将列表中全部的“34”删除
    # print(r.lrange('list2',0,-1))
    
    
    '''
    8.删除并返回:
    lpop(name)
    在name对应的列表的左侧获取第一个元素并在列表中移除,返回值则是第一个元素
    rpop(name)
    表示从右向左操作
    '''
    # r = connectRedis()
    # print(r.lrange('list2',0,-1))
    # print(r.lpop("list2") )                  #删除list中最左边的元素  ,并返回此元素
    # print(r.lrange('list2',0,-1))

    '''
    9.取值(根据索引号取值)
    lindex(name, index)
    在name对应的列表中根据索引获取列表元素
    '''
    # r = connectRedis()
    # r.lpush("list2", 22,33,44)          #将元素依次从左侧添加
    # print(r.lindex("list2",0))          #取出索引号为0的值

    '''
    其他操作
    '''

    '''delete(*names):删除redis中的任意数据类型(string、hash、list、set、有序set)'''
    # r = connectRedis()
    # r.delete('hash1','hash2')       #删除hash1,hash2

    '''exists(name): 检查redis的name是否存在。存在就返回1,不存在返回0'''
    # r = connectRedis()
    # print(r.exists("list2"))        #返回1
    # print(r.exists("jj"))

    '''expire(name,time):为某个redis的某个name设置超时时间'''
    # r =connectRedis()
    # r.lpush("list5", 33,44,55)
    # r.expire("list5", time=3)           #设置超时时间
    # print(r.lrange("list5",0,-1))
    # time.sleep(3)
    # print(r.lrange("list5",0,-1))

    '''type(name):获取类型'''
    # r = connectRedis()
    # print(r.type("list2"))                #获取其类型



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值