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

    简介

      Redis是现在最受欢迎的NoSQL数据库之一,它是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。

      如何安装Redis?https://www.cnblogs.com/liuqingzheng/p/9831331.html

      一般Redis可以存储的数据类型是,String、Hash、List、SortedSet(zSet)、Set。

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

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

    //命令
    
    //添加元素
    //ex:秒级过期时间,nx:键不存在时才能设置成功,xx键存在时才能设置成功
    set key value [ex seconds] [px milliseconds] [nx|xx]
    
    //获取值
    get key
    
    //批量设置值
    mset key value [key value ...]
    
    //加法    对应的key值自增1,如果没有这个key值,自动给你创建并赋值1
    //对应key值不是数字,会报错((error) ERR value is not an integer or out of range)
    incr key
    
    //减法    对应的key值自减1,如果没有这个key值,自动给你创建并赋值-1
    //对应key值不是数字,会报错((error) ERR value is not an integer or out of range)
    decr key
    
    //获取key对应value的字符串长度
    strlen key
    
    //设置并返回原值
    getset key value
    
    //设置指定位置的字符
    setrange key offeset value
    //例子
     set redis pest
     setrange redis 0 b
     get redis
     结果:"best"
     
    //获取部分字符串
    getrange key start end 

    二.散列Hash ---- key-field-value

      相当于是一个key存在多个map。Redis中的散列可以看成具有String key和String value的map容器,可以将多个key-value存储到一个key上。每一个Hash可以存储4294697295个键值对。

    //命令
    
    //设置值
    hset key field value
    
    //获取值
    hget key field
    
    //删除field
    hdel key field [field ...]
    
    //计算field个数
    hlen key
    
    //批量设置或获取field-value
    hmset key field value [field value ...]
    hmget key field [field ...]
    
    //判断field是否存在
    hexists key field
    
    //获取所有field
    hkeys key
    
    //获取所有value
    hvals key
    
    //获取所有的field-value
    hgetall key
    
    //以某种形式自增(Int) increment为增量
    //对应value必须为int,否则报错((error) ERR hash value is not an integer)
    hincrby key field increment
    
    
    //以某种形式自增(Float) increment为增量
    //对应value必须为float,否则报错((error) ERR hash value is not a valid float)
    hincrbyfloat key field increment
    
    //计算value的字符串长度
    hstrlen key field

     三.集合Set

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

    //命令
    
    //添加元素
    sadd key element ...
    
    //删除元素
    srem key element [element ...]
    //返回成功删除元素个数//计算元素个数
    scard key
    
    //判断元素是否在集合中
    sismember key element
    
    //随机从集合返回指定个数元素
    srandmember key [count]
    
    //从集合随机弹出元素(可以理解为随机删除元素)
    spop key [count]
    
    //获取所有元素
    smembers key
    
    //多个集合求交集
    sinter key [key ...]
    
    //多个集合求并集
    sunion key [key ...]
    
    //求多个集合的差集(前面key对应value比后面key对应value多出的值)
    sdiff key [key ...]
    
    //将交集、并集、差集的结果保存(得到的结果另存为到一个新的set中)
    sinterstore destination key [key ...]
    suionstore destination key [key ...]
    sdiffstore destination key [key ...]

    四.列表List

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

    //命令
    
    //从右边插入元素
    rpush key value [value ...]
    
    //从左边插入元素
    lpush key value [value ...]
    
    //向某个元素前或者后插入元素
    linsert key before|after pivot value
    
    //获取指定范围内的元素列表
    lrange key start end
    
    //获取列表指定索引下标的元素
    lindex key index
    
    //获取列表长度
    llen key
    
    //从列表左侧弹出元素(即删除,返回被弹出的值)
    lpop key
    
    //从列表右侧弹出(即删除,返回被弹出的值)
    rpop key
    
    //删除指定元素,count>0从左到右,count<0从右到左,count=0,删除所有
    //value是指定要删除的值,会有重复的值,所以要判断是从左边开始找删除的值还是右边开始找或者所有都删
    lrem key count value
    
    //按照索引范围修剪列表
    ltrim key start end

    五.SortedSet(zSet)

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

    //命令
    
    //添加成员
    zadd key score member
    
    //计算成员个数
    zcard key
    
    //计算某个成员的分数,如果成员不存在,则返回nil
    zscore key member
    
    //计算成员的排名,zrank是分数从低到高,zrevrank从高到低
    zrank key member
    zrevrank key member
    
    //删除成员
    zrem key member
    
    //增加成员的分数
    zincrby key increment member
    
    //返回指定排名范围的成员
    //从低到高返回
    zrange key start end [withscores]
    //从高到低返回
    zrevrange key start end [withscores]
    
    //返回指定分数范围的成员
    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
    
    //返回指定分数范围成员个数
    zcount key min max
    
    //删除指定排名内的升序元素
    zremrangebyrank key start end
    
    //删除指定分数范围的成员
    zremrangebyscore key min max
    
    //求两个集合交集 (destination:得到的结果另存为的新zSet名字)
    zinterstore destination numkeys key [key ...] [weights weight [weight ...]]
    [aggregate sum|min|max]
    
    //求并集(destination:得到的结果另存为的新zSet名字)
    zunionstore destination numkeys key [key ...] [weights weight [weight ...]]
    [aggregate sum|min|max]
  • 相关阅读:
    零点存在定理与介值定理
    moco入门
    git的基础操作-入门
    有道笔记链接地址 -----关于python
    Linux学习---linux的svn的配置与安装
    Linux学习---linux系统下安装配置Jenkins
    Linux学习-linux系统下安装jdk和tomcat,以及遇到的问题清单
    Linux学习-linux系统下python升级到python3.6步骤详解,以及遇到的问题解决
    Linux学习---Linux目录结构说明
    电脑屏幕左上角出现一个小的白块
  • 原文地址:https://www.cnblogs.com/shadoll/p/14388289.html
Copyright © 2011-2022 走看看