zoukankan      html  css  js  c++  java
  • redis-基本数据类型及应用场景

    redis 启动

    官网下载redis后,解压,再打开cmd

    cd  D:Program Files
    edis  #切换到redis的目录下
    redis-server.exe redis.windows.conf #启动redis服务

     这时候另启一个 cmd 窗口
    切换到 redis 目录下运行如下命令,即可连接到redis服务端,可以输入命令进行set/get等操作。

    redis-cli.exe -h 127.0.0.1 -p 6379

    redis有16个数据库,默认是第0个数据库。通过select 3 切换到第3个数据库

    dbsize     #
    keys *     #查看数据库所有的key
    flushdb     #清空当前库的内容
    flushall    # 清空全部数据库的内容
    
    exists key     #key是否存在
    expire key 毫秒数     # 设置key的过期时间
    ttl key     #查看key还有多久过期
    type key     #查看key的类型

    String

    数据结构为简单动态字符串。是可以修改的字符串,内部结构实现类似java的ArrayList,
    采用预分配冗余空间的方式来减少内存的频繁分配。

    基本命令

    set key value [expiration EX seconds|PX milliseconds] [NX|XX]

    ex:设置key在多少秒过期
    px:设置key在多少毫秒过期
    nx:相当于setnx,当key不存在才设置
    xx:当key存在时,覆盖

    append key value     #往key的值上追加内容
    incr    key         # ++key 浏览量、点赞数
    decr key     # --key 取消点赞,点赞数减一
    incrby key num    # key+=num
    decrby key num    #key -= num
    setrange key offset value    #从offset的位置开始替换
    getrange key start end #截取key的 start-end 的字符,start 从0开始

    setex (set with expire)     #设置过期时间
    setex key seconds value
    setnx (set if not exist)    #不存在就设置,在分布式锁中经常使用
    setnx key value

    mset    #设置多个k v
    mget    #获取多个k
    msetnx #操作是原子性的,案例中,k1已经存在,故k4也没有set进去。

    应用场景:
    阅读数:只要点击rest地址,直接使用incr key 命令自增1.
    商品编号、定单号采用incr命令生成

    Hash
    对应java:  map<String,Map<Object,Object>>

    List
    单键多值
    Redis列表是简单的字符串列表,按照插入的顺序排序。可以添加元素到列表的头部(左边)
    或者尾部(右边)
    它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标操作中间节点性能会较差。

    队列、栈
    允许重复

    lpush key vlaue    #头部插入数据
    rpush    key value    #尾部插入数据
    
    lrange key start end    #返回 start-end的数据
    
    lpop key    #弹出头部数据
    rpop key    #弹出尾部数据

    ltrim list start end  # list = substr[start,end]

     

     

    应用场景:
    微信订阅

    Set
    集合 无序不重复


    应用:
    1、抽奖小程序


    2、朋友圈点赞列表

    3、共同关注的人


    共同爱好

    QQ内推可能认识的人

    Zset

    对于排行榜和最新列表两种应用场景,list类型能做到的sorted set类型都能做到,list类型做不到的sorted set类型也能做到,那为什么还要使用list类型去实现排行榜或最新列表呢,直接用sorted set类型不是更好吗?原因是sorted set类型占用的内存容量是list类型的数倍之多(之后会在容量章节详细介绍),对于列表数量不多的情况,可以用sorted set类型来实现,比如上文中举例的打擂金曲排行榜,每天全国只有一份,两种数据类型的内存容量差距可以忽略不计,但是如果要实现某首歌曲的翻唱作品地区排行榜,数百万的歌曲,300多个地区,会产生数量庞大的榜单,或者数量更加庞大的朋友圈点赞列表,就需要慎重地考虑容量的问题了。

  • 相关阅读:
    滴滴日送400万红包,仅仅为人群不冷漠?
    C++提供的四种新式转换--const_cast dynamic_cast reinterpret_cast static_cast
    GreenDao开源ORM框架浅析
    Python 计数器
    Linux虚拟内存的添加
    Linux iptables
    Python set
    Python dict get items pop update
    Python contains
    Python reverse
  • 原文地址:https://www.cnblogs.com/weimengjiacan/p/14918651.html
Copyright © 2011-2022 走看看