Redis的五种基本数据类型
- String
- List
- Hash
- Set
- 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
在第一次使用时,如果容器不存在,就自动创建一个
如果里面没有元素了,那么立即删除容器,释放内存
本博客内容参考资料均来自于网络,如有侵权,请邮箱联系,我去处理,谢谢合作。