• redis


    今日内容概要

    • redis字符串操作
    • redis hash操作
    • redis列表操作
    • redis管道
    • redis其他操作
    • django中集成redis
    • celery介绍

    redis字符串操作

    1.主要的api:操作字符串的方法
    ###1—基本使用get,set,del
    get name #时间复杂度 o(1)
    set name lqz #时间复杂度 o(1)
    del name #时间复杂度 o(1)
    ###2—其他使用incr,decr,incrby,decrby
    incr age #对age这个key的value值自增1
    decr age #对age这个key的value值自减1
    incrby age 10 #对age这个key的value值增加10
    decrby age 10 #对age这个key的value值减10
    #统计网站访问量(单线程无竞争,天然适合做计数器)
    #缓存mysql的信息(json格式)
    #分布式id生成(多个机器同时并发着生成,不会重复)
    ###3—set,setnx,setxx
    set name lqz #不管key是否存在,都设置
    setnx name lqz #key不存在时才设置(新增操作)
    set name lqz nx #同上
    set name lqz xx #key存在,才设置(更新操作)
    ###4—mget mset
    mget key1 key2 key3 #批量获取key1,key2.。。时间复杂度o(n)
    mset key1 value1 key2 value2 key3 value3 #批量设置时间复杂度o(n)
    #n次get和mget的区别
    #n次get时间=n次命令时间+n次网络时间
    #mget时间=1次网络时间+n次命令时间
    ###5—其他:getset,append,strlen
    getset name lqznb #设置新值并返回旧值 时间复杂度o(1)
    append name 666 #将value追加到旧的value 时间复杂度o(1)
    strlen name #计算字符串长度(注意中文) 时间复杂度o(1)
    ###6—其他:incrybyfloat,getrange,setrange
    increbyfloat age 3.5 #为age自增3.5,传负值表示自减 时间复杂度o(1)
    getrange key start end #获取字符串制定下标所有的值 时间复杂度o(1)
    setrange key index value #从指定index开始设置value值 时间复杂度o(1)

    redis列表操作

    1.列表特点:
    有序队列,可以从左侧添加,右侧添加,可以重复,可以从左右两边弹出
    2.API操作
    (1)插入操作:
    #rpush 从右侧插入
    rpush key value1 value2 …valueN #时间复杂度为o(1~n)
    #lpush 从左侧插入
    #linsert
    linsert key before|after value newValue #从元素value的前或后插入newValue 时间复杂度o(n) ,需要遍历列表
    linsert listkey before b java
    linsert listkey after b php

    (2)删除操作:
    lpop key #从列表左侧弹出一个item 时间复杂度o(1)

    rpop key #从列表右侧弹出一个item 时间复杂度o(1)

    lrem key count value
    #根据count值,从列表中删除所有value相同的项 时间复杂度o(n)
    1 count>0 从左到右,删除最多count个value相等的项
    2 count<0 从右向左,删除最多 Math.abs(count)个value相等的项
    3 count=0 删除所有value相等的项
    lrem listkey 0 a #删除列表中所有值a
    lrem listkey -1 c #从右侧删除1个c

    ltrim key start end #按照索引范围修剪列表 o(n)
    ltrim listkey 1 4 #只保留下表1–4的元素

    (3)查询操作

    redis管道

    1.讨论redis数据库是否支持事务:
    答:(1)redis事务机制可以保证一致性和隔离性,无法保证持久性,但是对于redis而言,本身是内存存数据库,所以持久化不是必须属性,原子性需要自己进行检查,尽可能保证。
    (2)redis不像mysql一样,支持强事务,事务的四大特性不能全部满足,但是能满足一部分,通过redis的管道实现的。
    (3)redis本身不支持事务,但是可以通过管道,实现部分事务。
    (4)redis通过管道,来保证命令要么都成功,要么都失败,完成事务的一致性,但是管道只能用在单实例,集群环境中,不支持pipline。
    2.代码展示

    import redis
    
    coon = redis.Redis()
    pipline = coon.pipeline(transaction=True)
    pipline.decr('a', 2)  # a减2
    raise Exception('我崩了')
    pipline.incr('b', 2)  # b加2
    pipline.execute()
    conn.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    redis其它操作

    集合:有序集合----》redis模块提供的方法API
    通用操作:无论是5大类型的那种,全部都支持。
    import redis

    conn = redis,Redis()

    #1.delete(*names)
    #conn = delete(‘age’,‘name’)

    #2.exists(name)
    res = conn.exists(‘xx’)

  • 相关阅读:
    博客园众包平台:游戏开发者找人长期合作建设自己的网站
    3.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能
    redis 持久化
    ELF header
    线程安全,,Maven基本介绍,220822,,
    服务器正文18:UDP可靠传输的理解和思考(读云凤博客有感)
    Vue指令v-show和v-if的区别
    【第八章 索引,索引结构,B-Tree,B+Tree,Hash,索引分类,聚集索引&二级索引,索引语法】
    笙默考试管理系统-SMExamination.Model.Exercise展示
    iPhone15手机拓展坞方案,支持手机快充+传输数据功能
  • 原文地址:https://blog.csdn.net/DiligentGG/article/details/127869192