分为:String、hash、list、set、aSet五种数据类型
一.Strings 类型及操作
String 是最简单的类型,一个key对应一个Value,String类型是二进制安全的。Redis的String 可以包含任数据,比如jpg图片,或者序列化的对象。redis中空值为nil
操作方法:
1.set():设置key对应的值为String类型的value,语法:set key value,在redis中同一个key只有一个value
2.Setnx()设置key对应的值为String的value,如果key已经存在,返回0,没有则设置成功,nx是 not exists的意思,
3.setex()设置key对应的值为String类型的value,并指定此键值对应的有效期。ex是有效期:语法,setex name 时间长度(秒单位)value
4.setrange()设置指定key的value值的子字符串 语法:setrange key 6(从第几个字符开始,第一位为0) value 返回字符串长度,注,相等的替换长度
5.mset 批量设置多个值,语法,mset key1 value1 key2 value
6.msetnx 一次设置多个key值,成功返回ok失败返回0,返回失败多个值是都不成功,但是不会覆盖已存在的key的值
7.get():取得key对应的value 语法 :get key
8.getset 设置key的值,并返回key的旧值,语法:getset key newValue return oldValue
9.getrange()获取子字符串,语法 getrange key start length(起始长度) endlength(结束长度)
10.mget()批量返回 如果不存在则返回nil
11.incr()对key值进行加加操作,并返回新的值每次递增1(如果是字符串报错)如果key不存在,则设置key,默认值为0
12.incrby()对key值进行制定单位的加加操作,如果key不存在,则设置key,默认值为0
13.decr()对key值进行减减操作,并返回新的值每次递增1(如果是字符串报错)如果key不存在,则设置key,默认值为0
14.decrby()对key值进行制定单位的减操作,并返回新的值(如果是字符串报错)如果key不存在,则设置key,默认值为0
15.append()给指定key追加value,返回新的字符串的长度
16.strlen()查看key的value长度
二.hash类型及操作
hash是string类型的field和value的映射表,它的添加、删除、操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成耽搁string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
1.hset()甚至hash field为制定值,如果key不存在,则先创建。语法:hset object(对象) field(属性) value
2.hsetnx()同string中的setnx()方法一样
3.hmset 设置hash的多个field 语法: hset object(对象) field1(属性) value1 field2(属性) value2
4.hget() 同string的get
5.hmget()批量返回key对应的value
6.hincrby() 同string的incrby()方法
7.hexists()测试执行field是否存在,存在返回1,不存在返回0
8.hlen()返回hash中所有的f存在的iled个数
9.hdel()删除执行hash的field 语法:hdel hash field 返回1 成功,返回0 失败
10.hkeys() 返回hash中的所有的field的名称 语法:hkeys hash
11.hvals()返回hash中所有的field对应的value值
12.hgetall()获取hash中所有的field和value
三List类型
List是一个链表结构,主要的功能是push、pop、获取一个范围内的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。可以通过push、pop操作从聊表的头部或者尾部添加删除元素。这样,list可以作为栈(先进后出),又可以作为队列(先进先出)。有序链表,允许存在重复值
1.lpush() 从list的头部添加字符串元素 语法:lpush listName value(栈)
2.lrange(),取list中的元素,语法,lrange listname 0(从头部i 一个位置) -1(从尾部第一个位置)
3.rpush() 从list的尾部开始添加元素 语法:rpush listtname value( 队列)
4.linsert()在key对应的特定位置前或者后添加字符串 语法: insert listName before/ “被指定值” 添加值
5.lset()重新设置list中指定下标的值 语法: lset listName num(下标值) vaue
6.lrem()从key对应的list中删除n个和value相同的元。素语法: rem listName n(删除个数) value
7.ltrim()保存指定key的值范围内的数据 语法:ltrim listName start(保留开始下标) end(保留元素结束下标)
8.lpop()从List的头部删除元素,并返回删除元素。语法:lpop Listname
9.rpo()从list的尾部删除元素,并返回删除元素。语法:rpop Listname
10.rpoplpush()从尾移除元素,并添加到第二个list的头部。语法:rpoplpush removeList addList 并返回操作元素。
11.lindex()返回名称为key的list中index位置的元素。语法:index listName index(下标)
12.llen()返回链表的长度。语法:llen ListName
四:sets类型及操作
set是集合,它是string类型的无序集合,set是有hash table实现的,添加、删除和查找复杂度是0(1),对集合我们可以取并集、交集、差集。通过这些操作,我们可以实现sns中的好友的推荐和blog(博客)的tag(标签)功能。不允许重复值。(栈存储)
1.sadd()向名称为key的set中添加元素。语法:sadd setName value。
2.smembers()查看set集合元素。语法:smemebers setName
3.srem()删除名称为key的set中的元素。语法:seem setName value
4.spop()随机返回并删除名称为key的set元素。语法:spop listName
5.sdiff()返回所有给定的key与第一个key的差集。以第一个集合为标准。语法:sdiff setName1 setName2,返回setName1中与setName2不同的元素。
6.sdiffstore()返回所有给定的key与第一个key的差集,并将结果存为另一个key。语法:sdiffstore setStore(存储集合) setName1 setName2 将setName1中不同于setName2的元素,添加到setStore集合中。
7.sinter() 返回给定key的交集。语法:sinter setName1 setName2
8.sinterstore()返回所有给定key的交集,并将结果存储于另一个key。语法:sinterstore setstore setName1 setName2
9.sunion()返回所有给定key的并集。语法:sunion setName1 setName2
10.sunionstore()返回给定key的并集,存储到一个新的key中。语法:sunion setStore setName1 setName2
11.smove()从第一个key对应的set移除member并添加到第二个对应的set中。语法:move setName1(被移除的集合) setName2(添加的集合) value
12.scard()返回名称为key的set的元素个数。语法:scard setName
13.sismember()测试member是否为set中的元素。语法:sismember value setName 存在返回1,否则返回0。
五:sorted sets类型及操作
sorted set 是set的一个升级版本,它在set的基础上,增加了一个顺序属性,这一属性在添加修改元素的时候可以制定。可以理解为有两列的mysql表,一列存value,一列存顺序,操作中key理解为zet的名字。修改一个值后,会自动排序。不允许重复
1.zadd()向名称为key的set中添加元素member,score用于排序,如果该元素存在则返回0。语法:zadd setName num(顺序) value,如果对一个顺序多次赋值,则该顺序为第一个值。
2.zrange()取值,
3.zrem()删除名称为key的zset中的元素member。语法:zrem zset value
4.zincrby()如果在名称为key的set中已经存在元素member,则该元素的score增加increment,否则向该集合中添加该元素,其score值为increment。语法 zincrby setName num(增加值) value ,允许一个位置存在多个value
5.zrank()返回名称为key的set中的member元素的排名,(按score小到大排序)即下标。语法:zrank setName value
6.zrevrank()返回名称为key的zset中的member元素的排名(按score从大到小的排序)即下标。先按倒序排序,在取下标。语法:zrevrank setName value
7.zrevrange()返回名称为key的zset(按score从大到小顺序)中的index从start到end的所有元素。语法:zrevrange zsetName start end withscores
8.zrangebyscore(),返回集合中score在给定区间的元素。语法:zrangebyscore asetName start end withscores
9.zcount()返回集合中score在给定区间的数量。语法:zcount asetName start end
10.zcard()返回集合中所有元素的个数。语法:zcard asetName
11.zremrangebyrank() 删除指定下标的key。语法:zremrangebyrank asetName start end
12.zremrangebyscore()删除几个中score在给定区间的元素。按存储位置删除。语法:zremrangebyscore zsetName