1.String类型
1.1 简介:
1.String类型是Redis的最基本的数据类型,一个Redis中的字符串value最多可以是512M 2.String类型是二进制的,表示Redis的String可以包含任何数据,比如jgp图片或者序列化的对象 3.String的数据结构为简单的动态字符串SDS(Simple Dynamic String)是可以修改的字符串, 内部结构类似于java的Arraylist
1.2 常用命令:
#查看所有的key
keys *
#添加键值对
set key value
#同时设置多个键值对
mset key1 value key2 value2
#查询对应key的键值对
get key
#将指定的value追加到key原值的末尾如:(原值为:acb key值为:edf 执行后结果为:abcdef)
append key value
#获取key值的长度
strlen key
#只有key不存在时,才设置key的值为value
strnx key value
#获取值的范围(如:0-2)
getrange key 0(起始位置) 2(结束位置)
#在起始位置后添加相对应的value值
setrange key 3(起始位置) value
#设置过期时间单位为秒
setex key 20(过期时间) value
#用新value换掉对应 key的旧value
getset key value
#同时设置多个键值对,只有key不存在时并且有一个失败则都失败
msetnx key1 value key2 value2
#将key中储存的数字增1 ,只能对数字值操作,如果为空新增值为1
incr key
#将key中储存的数字减1 ,只能对数字值操作,如果为空新增值为-1
decr key
#将key中储存的数字增加相对应的步长值如:(原value值为500,当前步长为20,结果为520)
incrby key 步长
#将key中储存的数字减少相对应的步长值如:(原value值为500,当前步长为20,结果为480)
incrby key 步长
2.List类型(列表)
2.1 简介:
1.Redis列表是简单的字符串列表,按照顺序插入排序,可以添加一个元素到列表的头部(左边)或者 2.尾部(右边) 3.它的底层实际是一个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能较差 4.List的数据结构为快速链表quickList 5.首先在列表元素较少的情况下使用一块内存存储,这个结构是ziplist,也即是压缩列表 5.当数据量比较大时才会改成quicklist
2.2 常用命令:
#从左边插入一个或多个值 lpush key1 value1 value2 #从右边插入一个或多个值 rpush key3 value1 value2 #从左边取出一个值(值在键在,值光键亡) lpop key #从右边取出一个值(值在键在,值光键亡) rpop key #从key1的右边取出一个值插入到key2左边 rpoplpush key1 key2 #按照下标位置获得对应key的元素(从左到右,0到-1代表取所有的) lrange key 0(1下标位置) -1(2下标位置) #获取对应key对应下标的元素 lrange key 0(下标位置) #获取key的列表长度 llen key #在value后面插入一个newvalue值(是一个单独的value) linsert key after value newvalue #在value前面插入一个newvalue值(是一个单独的value) linsert key befor value newvalue #从左边删除n个对应的value值 lrem key n value #将列表key下标为index的值替换成value lset key index value
3. Set类型(集合)
3.1 简介:
1.Redis set对外提供的功能与list类似的是一个列表的功能,特殊之处在于set是可以自动排重 的,当你需要储存一个列表数据,又不需要出现重复的数据时,set是一个很好的选择 2.set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的 3.Redis的Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加,删 除,查找的复制度都是o(1) 4.Set结构是dict字典,字典是用哈希表实现的 5.java中的HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象Redis 的Set结构也是一样的
3.2 常用命令:
#将一个或多个元素加入到集合key中 sadd key value1 value2 #取出key集合的所有值 smembers key #判断集合key是否含有该value值,有返回1没有返回0 simember key value #返回该集合的元素个数 scard key #删除集合中的某个元素 srem key value value #随机从该集合吐出一个值(值取完key则不存在) spop #随机从该集合中取出n个值,不会从集合中删除 srandmember key n #把key1集合中的value1从一个集合(key1)移动到另一个集合(key2) smove key1 key2 value1 #返回两个集合的交集元素 sinter key1 key2 #返回两个并合的交集元素 sunion key1 key2 #返回两个集合的差集元素 sdiff key1 key2
4. Hash类型(哈希)
4.1 简介:
1.Redis hash 是一个键值对集合 2.Redis hash 是一个String类型的field和value的映射表,hash特别适合用于储存对象类似 java里面的Map3.Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表).当field-value 长度较短且个数较少时,使用ziplist否则使用hashtable
4.2 常用命令:
#给key集合中的field赋键值value hset key field value #从key集合field取出value hget key field value #批量设置值 hmset key field value1 value2 #查看哈希表key中是否存在该field hexists key field #列出该hash集合的所有field hkeys key #列出该hash集合的所有value hvals key #给哈希表key中的域field的值增加上增量2如:(field为valeu为2,执行后的value结果为4) hincrby key field 2 #将哈希表中key中的域field的值设置为value(field的value不存在时才生效) hsetnx key field value
5. Zset类型(有序集合)
5.1 简介:
1.Redis有序集合的zset与普通的set非常相似是一个没有重复元素的字符串集合 2.不同之处,有序集合的每个成员都关联了一个评分(score),被用来按照从最低分到最高分的方式 排序集合中的成员,集合的成员是唯一的但是评分是可以重复的 3.因为元素是有序的,可以很快的根据评分(score)或者次序(position)来获取一个范围的元素 4.访问有序集合的中间元素也是非常快的 5.zset底层使用了两个数据结构: (1):hash,hash的作用就是关联元素value和权重scope,保障元素value的唯一性,可以通过value找到对应的scope值 (2):跳跃表,跳跃表的目的在于给元素的value排序,根据scope的范围获取元素列表
5.2 常用命令:
#将一个或多个元素及score值加入到有序集合key当中 zadd key score1 value1 score2 value #返回有序key中下标在star与stop之间的元素 zrange key star stop #返回有序key中下标在star与stop之间的元素和score(评分) zrange key star stop withscores #返回有序集合key中,所有scope值介于min和max之间的成员(包括等于min与max的) zrangebyscores key min max #返回有序集合key中,所有scope值介于min和max之间的成员和评分(scope)(包括等于min与max的) zrangebyscores key min max withscores #改为同大到小排序 zrevrangebyscores key max min #为元素的scope增n zincrby key n value #删除集合中key指定的value元素 zrem key value #统计该集合下,min与max内的元素个数 zcount key min/max #返回改值在集合中的排名,从0开始 zrank key value



