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

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

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

 

  

posted @ 2020-04-08 00:09  繁华乱世  阅读(2697)  评论(0编辑  收藏  举报