zoukankan      html  css  js  c++  java
  • Redis的五种数据类型

    Redis-五种数据类型

      

    对于Redis来说,它只能存储五种基本数据类型,

    在之前的版本中都是String、Hash、List、SortedSet(zSet)、Map

    而现在的新版本中String、Hash、List、SortedSet(zSet)、Set

    一、字符串String ----String  Key-Value

      字符串是Redis中最常用的类型,是一个由字节组成的序列,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据。

    Value最多可以容纳的数据长度为512MB。

    set key value 

    往key中存入一个值(value)

    get key  

    获取键为key的值

      注意:redis中的Key和Value时区分大小写的,命令不区分大小写, redis是单线程 不适合存储大容量的数据

      incr key      ---对应的value 自增1,如果没有这个key值 自动给你创建创建 并赋值为1

      decr key     ---对应的value 自减1

        注意:自增的value是可以转成数字的

    二、散列Hash-------key-filed-value

      相当于是一个key中存在多个map。Redis中的散列可以看成具有String key和String value的map容器,可以将多个

    key-value存储到一个key中。每一个Hash可以存储4294967295个键值对。

    hset  key  filed value 

      设置值

    hget  key filed

      获取值

    三、集合Set

      Redis的集合是无序不可重复的,此处的无序是数据不能重复。和列表一样,在执行插入和删除以及判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。

      应用场景:1.利用交集求共同好友。2.利用唯一性,可以统计访问网站的所有独立IP。3.好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。

    四、列表List

      Redis的列表允许用户从序列的两端推入或者弹出元素,列表由多个字符串值组成的有序可重复的序列,是链表结构,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。List中可以包含的最大元素数量是4294967295。

      应用场景:1.最新消息排行榜。2.消息队列,以完成多程序之间的消息交换。可以用push操作将任务存在list中(生产者),然后线程在用pop操作将任务取出进行执行。(消费者)

    List有顺序可重复

    Ipush list 1 2 3 4  从左添加元素

    rpush list 1 2 3 4  从右添加元素

    Irange list 0 -1 (从0到-1元素查看:也就表示查看所有)

    Ipop list (从左边取,删除)

    rpop list(从右边去,删除)

    五、SortedSet(zSet)

      有顺序,不能重复!!此处的不能重复是索引为唯一的,数据却可以重复。和Set很像,都是字符串的集合,都不允许重复的成员出现在一个set中。他们之间差别在于有序集合中每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。尽管有序集合中的成员必须是卫衣的,但是分数(score)却可以重复。

      应用场景:可以用于一个大型在线游戏的积分排行榜,每当玩家的分数发生变化时,可以执行zadd更新玩家分数(score),此后在通过zrange获取几分top ten的用户信息。

    适合做排行榜,排序需要一个分数属性

    zadd zset1 9 a 8 c 10 d 1 e   (添加元素 zadd key score member )

      (ZRANGE key start stop [WITHSCORES])(查看所有元素:zrange key  0  -1  withscores)

      如果要查看分数,加上withscores.

      zrange zset1 0 -1 (从小到大)

      zrevrange zset1 0 -1 (从大到小)

      zincrby zset2 score member (对元素member 增加 score)

     1 127.0.0.1:6379> zadd zset1 8 a 4 b 5 c 1 d
     2 (integer) 4
     3 127.0.0.1:6379> zrange zset1 0 -1 
     4 1) "d"
     5 2) "b"
     6 3) "c"
     7 4) "a"
     8 127.0.0.1:6379> zadd zset1 9 a
     9 (integer) 0
    10 127.0.0.1:6379> zrange zset1 0 -1 
    11 1) "d"
    12 2) "b"
    13 3) "c"
    14 4) "a"
    15 127.0.0.1:6379> zrange zset1 0 -1 withscores
    16 1) "d"
    17 2) "1"
    18 3) "b"
    19 4) "4"
    20 5) "c"
    21 6) "5"
    22 7) "a"
    23 8) "9"
    24 127.0.0.1:6379> zrevrange zset1 0 -1
    25 1) "a"
    26 2) "c"
    27 3) "b"
    28 4) "d"
    29 127.0.0.1:6379> zincrby zset1 1 a
    30 "10"
    31 127.0.0.1:6379> zrevrange zset1 0 -1 withscores
    32 1) "a"
    33 2) "10"
    34 3) "c"
    35 4) "5"
    36 5) "b"
    37 6) "4"
    38 7) "d"
    39 8) "1"
    乾坤未定,你我皆是黑马
  • 相关阅读:
    css浮动 blog_zss小帅
    块级元素和行内元素 blog_zss小帅
    css清除常用标签默认样式表 blog_zss小帅
    css三种基本选着器 blog_zss小帅
    Flex 弹性盒基本语法 blog_zss小帅
    利用this属性实现点击按钮变色.选中效果 blog_zss小帅
    Form中Block的重新查询
    Form中Block的Data source基于View的开发
    客制的出货功能非常慢
    form builder画布跟着鼠标滚轮上下跳动
  • 原文地址:https://www.cnblogs.com/liuqijia/p/11428145.html
Copyright © 2011-2022 走看看