zoukankan      html  css  js  c++  java
  • redis数据结构

    1.strings类型

    • set   设置key

    • get   获取key

    • append  追加string

    • mset   设置多个键值对

    • mget   获取多个键值对

    • del  删除key

    • incr  递增+1

    • decr  递减-1

    127.0.0.1:6379> set name 'yu'   #设置key
    OK
    127.0.0.1:6379> get name    #获取value
    "yu"
    127.0.0.1:6379> set name 'yuchao'  #覆盖key
    OK
    127.0.0.1:6379> get name    #获取value
    "yuchao"
    127.0.0.1:6379> append name ' dsb'   #追加key的string
    (integer) 10
    127.0.0.1:6379> get name  #获取value
    "yuchao dsb"
    127.0.0.1:6379> mset user1 'alex' user2 'xiaopeiqi'    #设置多个键值对
    OK
    127.0.0.1:6379> get user1    #获取value
    "alex"
    127.0.0.1:6379> get user2    #获取value
    "xiaopeiqi"
    127.0.0.1:6379> keys *      #找到所有key
    1) "user2"
    2) "name"
    3) "user1"
    
    127.0.0.1:6379> mget user1 user2 name   #获取多个value
    1) "alex"
    2) "xiaopeiqi"
    3) "yuchao dsb"
    127.0.0.1:6379> del name        #删除key
    (integer) 1
    127.0.0.1:6379> get name        #获取不存在的value,为nil
    (nil)
    127.0.0.1:6379> set num 10    #string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作,而对于整型/浮点型可进行自增、自减操作。
    OK    
    127.0.0.1:6379> get num
    "10"
    127.0.0.1:6379> incr num    #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器
    (integer) 11
    127.0.0.1:6379> get num  
    "11"
    
    127.0.0.1:6379> decr num      #递减1  
    (integer) 10
    127.0.0.1:6379> decr num    #递减1
    (integer) 9
    127.0.0.1:6379> get num
    "9"
     

    2.list类型

    • lpush         从列表左边插

    • rpush         从列表右边插

    • lrange          获取一定长度的元素  lrange key  start stop

    • ltrim               截取一定长度列表

    • lpop                 删除最左边一个元素

    • rpop                     删除最右边一个元素

    • lpushx/rpushx                key存在则添加值,不存在不处理

    复制代码
    lpush duilie 'alex' 'peiqi' 'ritian'  #新建一个duilie,从左边放入三个元素
    
    llen duilie  #查看duilie长度
    
    lrange duilie 0 -1  #查看duilie所有元素
    
    rpush duilie 'chaoge'   #从右边插入chaoge
    
    lpushx duilie2  'dsb'  #队列存在则添加 dsb元素,key不存在则不作处理
    
    ltrim duilie 0 2  #截取队列的值,从索引0取到2,删除其余的元素
    
    lpop #删除左边的第一个
    rpop #删除右边的第一个
    复制代码

    3.sets集合类型

    redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

    集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

    • sadd/srem   添加/删除 元素

    • sismember   判断是否为set的一个元素

    • smembers    返回集合所有的成员

    • sdiff             返回一个集合和其他集合的差异

    • sinter           返回几个集合的交集

    • sunion          返回几个集合的并集

    复制代码
    sadd zoo  wupeiqi yuanhao  #添加集合,有三个元素,不加引号就当做字符串处理
    
    smembers zoo  #查看集合zoo成员
    
    srem zoo  wupeiqi #删除zoo里面的alex
    
    sismember zoo wupeiqi  #返回改是否是zoo的成员信息,不存在返回0,存在返回1
    
    sadd zoo wupeiqi   #再把wupeiqi加入zoo
    
    smembers zoo  #查看zoo成员
    
    sadd zoo2 wupeiqi mjj #添加新集合zoo2
    
    sdiff zoo zoo2 #找出集合zoo中有的,而zoo2中没有的元素
    
    sdiff zoo2  zoo  #找出zoo2中有,而zoo没有的元素
    
    sinter zoo zoo1   #找出zoo和zoo1的交集,都有的元素
    
    sunion  zoo zoo1  #找出zoo和zoo1的并集,所有的不重复的元素
    复制代码

    4.有序集合

    都是以z开头的命令

    用来保存需要排序的数据,例如排行榜,成绩,工资等。

    实例

    利用有序集合的排序,排序学生的成绩

    127.0.0.1:6379> ZADD mid_test 70 "alex"
    (integer) 1
    127.0.0.1:6379> ZADD mid_test 80 "wusir"
    (integer) 1
    127.0.0.1:6379> ZADD mid_test 99 "yuyu"

    排行榜,zreverange 倒叙   zrange正序

    复制代码
    127.0.0.1:6379> ZREVRANGE mid_test 0 -1 withscores
    1) "yuyu"
    2) "99"
    3) "wusir"
    4) "80"
    5) "xiaofneg"
    6) "75"
    7) "alex"
    8) "70"
    127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
    1) "alex"
    2) "70"
    3) "xiaofneg"
    4) "75"
    5) "wusir"
    6) "80"
    7) "yuyu"
    8) "99"
    复制代码

    移除有序集合mid_test中的成员,xiaofeng给移除掉

    复制代码
    127.0.0.1:6379> ZREM mid_test xiaofneg
    (integer) 1
    127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
    1) "alex"
    2) "70"
    3) "wusir"
    4) "80"
    5) "yuyu"
    6) "99"
    复制代码

    返回有序集合mid_test的基数

    127.0.0.1:6379> ZCARD mid_test
    (integer) 3

    返回成员的score值

    127.0.0.1:6379> ZSCORE mid_test alex
    "70"

    zrank返回有序集合中,成员的排名。默认按score,从小到大排序。

    复制代码
    127.0.0.1:6379> ZRANGE mid_test 0 -1 withscores
    1) "alex"
    2) "70"
    3) "wusir"
    4) "80"
    5) "yuyu"
    6) "99"
    127.0.0.1:6379>
    127.0.0.1:6379>
    127.0.0.1:6379> ZRANK mid_test wusir
    (integer) 1
    127.0.0.1:6379> ZRANK mid_test yuyu
    (integer) 2
    复制代码

    5.哈希数据结构

    哈希结构就是  k1   ->  k1 : v1     如同字典 套字典  { k1 : { k2: v2 }  }   ,取出v2 必须  k1,取出k2

    hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

    hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

    • hset 设置散列值
    • hget  获取散列值
    • hmset  设置多对散列值
    • hmget  获取多对散列值
    • hsetnx   如果散列已经存在,则不设置(防止覆盖key)
    • hkeys     返回所有keys
    • hvals     返回所有values
    • hlen      返回散列包含域(field)的数量
    • hdel     删除散列指定的域(field)
    • hexists    判断是否存在
    复制代码
    redis hash是一个string类型的field和value的映射表
    
    语法  hset key field value  
    
    hset news:1   title "first news title" #设置第一条新闻 news的id为1,添加数据title的值是"first news title"
    
    hset news:1 content "news content"    #添加一个conntent内容
    
    hget news:1 title   #获取news:1的标题
    
    hget news:1  content  #获取news的内容
    
    hmget news:1  title content   #获取多对news:1的 值
    
    hmset news:2 title "second news title" content "second Contents2"   #设置第二条新闻news:2 多个field
    
    hmget news:2 title  content #获取news:2的多个值
    
    hkeys news:1   #获取新闻news:1的所有key
    
    hvals news:1   #获取新闻news:1的所有值
    
    hlen news:1    #获取新闻news:1的长度
    
    hdel news:1 title   #删除新闻news:1的title
    
    hlen news:1     #看下新闻news:1的长度
    
    hexists news:1 title    #判断新闻1中是否有title,不存在返回0,存在返回1
  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/wanglan/p/10506133.html
Copyright © 2011-2022 走看看