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

    1. String
    2. List
    3. Hash
    4. Set
    5. ZSet

    首先看一下第一个:String

           String是redis中最简单的数据类型。在key-value中,一般所说的数据类型就是value的类型,而key的数据类型只有一种,是字符串类型,但是我们都知道,在java中,我也可以存一个对象,但是对象要往出写的过程需要序列化,所以存到redis中的依旧是字符串。

         redis中value的字符串,是一个动态字符串,内部是可以修改的,类似于java中的StringBuffer,它采用分配冗余空间的方式减少内存的频繁分配。在redis内部结构中,一般实际分配内存空间会大于需要的内存,当字符串小于1M的时候,扩容就是在现有的空间基础上加倍,扩容每次扩1M空间,最大是512M.

         操作字符串的常用命令:

    • append:使用这个命令的时候,如果key已经存在,则在value后追加内容,如果key不存在,则创建新的键值对。(append key value)
    • get :根据key的值查看value的值(get key)
    • set:赋值操作(set key value)
    • decr:当value的值是 数字的时候,实现对value的值减一,否则报错,如果value不存在,则会给value一个默认值0并在此基础上减一。(decr key)
    • decrby:和decr类似,都是执行减操作,不过decrby可以设置步长,也就是减的个数(decrby key 5)
    • getranger:可以用来返回value的子串,类似于java中的substring方法(getranger key  3  -3 (截取从第三个开始一直到倒数第三个))
    • getset:获取并更新某一个key的value(getset key value)
    • incr:给某个key自增
    • incrby:自增并设置步长
    • incrbyfloat:自增并设置步长,步长可以设置为浮点数
    • mget:批量获取
    • mset:批量存储
    • ttl:查看key 的过期时间
    • expire:设置key的有效期,如果key在过期之前被重新set,则过期时间会失效
    • persist:移除一个key的过期时间
    • setex:给key设置value,同时设置过期时间(时间单位是秒)
    • pxetex:给key设置value,同时设置过期时间(时间单位是毫秒)
    • setnx:默认,set命令命令会覆盖存在的key,setnx则不会。
    • msetnx:批量设置
    • setrange:覆盖一个已经存在key的value
    • strlen:查看字符串长度
    • flushall:清空所有

    字符串中BIT命令:在redis中,字符串都是以二进制方式存储的,BIT相关的命令,就是对二进制进行操作

    • getbit :获取key对应的value在offset处的bit值   
    • setbit :修改key对应的value在offset处的bit值      
    • bitcount:统计二进制中1的个数

    第二个看一下:List

    redis中的value是一个列表的形式,因为list的底层是数组所以他的元素是可以重复的。

    •    lputh:将value以从左到右的顺序依次插入到表头
    •    lrange:返回列表指定区间的元素
    •    rputh:将value以从右到左的顺序依次插入到表头
    •    rpop:移除并返回列表的末尾元素
    •    lpop:移除并返回列表的头部元素
    •    lindex:返回列表中,下标为index的元素
    •    ltrim:对列表修剪
    •    bipop:阻塞式的弹出,相当于lpop的阻塞,要设置阻塞时长

    第三个看一下:Set

    redis中,set的元素不能重复,可以放重复的,但是结果只有一个

    • sadd:添加元素到一个key中
    • smembers:获取一个key中的所有元素
    • srem:移除指定的元素
    • sismeneber:返回某个成员是否在集合中
    • scard:返回集合的数量
    • srandmember:随即返回一个元素
    • spop:随即返回并且出栈一个元素
    • smove:把一个元素从一个集合移到另一个集合中
    • sdiff:返回两个集合的差集(从小的集合中出发,顺序很关键)
    • sinter:返回两个集合的交集
    • sinterstore:返回两个集合的交集并存到一个新的集合
    • sdiffstore:返回两个集合的差集并存到一个新的集合
    • sunion:求并集
    • sunionstore:求并集并存到新的集合

    第四个看一下:Hash

     redis中,hash也称树,key是字符串,value是一个 键值对

    • hset:添加值
    • hget:获取值
    • hmset:批量添加
    • hmget:批量获取
    • hdel:删除的是value中的key中的value
    • hsetnx:默认如果key和field相同,会覆盖掉value,hsetnx则不会
    • hvals:获取所有value
    • hkeys:获取所有key
    • hgetall:同时获取key和value
    • hexists:返回field是否存在
    • hincrby:value自增
    • hincrbyfloat:value自增一个浮点数
    • hlen:返回某个key中value的数量
    • hstrlen:返回某个key中某个field的字符串长度

    第五个看一下:ZSet

    有序集合,可以用于检索

    • zadd:添加
    • zscore:返回member中的score值
    • zrange:返回集合中的一组元素(可以加上withscores(连同分数一起返回))
    • zrevrange:返回集合中的一组元素(倒叙)
    • zcard:返回元素个数
    • zcount:返回score在某个区间(闭区间)的元素的个数
    • zrangebyscore:按照score的范围返回元素
    • zrank:返回元素的排名(从小到大)
    • zrevrank:返回元素的排名(从大到小)
    • zincrby:score自增
    • zinterstore:给两个集合的交集放到到一个新的集合
    • zrem:弹出一个元素(删除)
    • zlexcount:计算数量(根据元素统计,还有元素区间统计)
    • zrangebylex:返回指定区间内的成员

    ####除却String

     在第一次使用时,如果容器不存在,就自动创建一个

    如果里面没有元素了,那么立即删除容器,释放内存

      

  • 相关阅读:
    HDMI介绍与流程
    HDMI热插拔检测原理
    在AES标准规范中,分组长度、密钥长度的关系
    WORD-每5行添加一个行号
    FreeRTOS 调试方法(printf---打印任务执行情况)
    SELinux深入理解
    一文彻底明白linux中的selinux到底是什么
    云锵投资 2020 年 06 月简报
    ubuntu16.04 安装opencv-2.4.9
    Windows高DPI系列控件(二)
  • 原文地址:https://www.cnblogs.com/javazl/p/12657280.html
Copyright © 2011-2022 走看看