Redis基本数据类型

Redis一共有五种基本数据类型:String、Hash、List、Set、ZSet

String

String类型是包含很多种类型的特殊类型,并且二进制安全的。比如序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等等。

  • set和get方法
  • 设置值:set name test
  • 取值:get name(设置name多次会覆盖)
  • 删除值:del name
  • 使用setnx(not exist)
  • name如果不存在进行设置,存在就不需要进行设置了,返回0
  • 使用setex(expired)
  • setex color 10 red 设置color的有效期为10秒,10秒后返回null(在Redis中nil表示空)
  • 使用setrange替换字符串
  • set email tttt@tt.com
  • setrange email 5 5表示从第几位开始替换,后面跟上替换的字符串
  • 使用一次性设置多个和获取多个值的mset、mget方法:
  • mset key1 bhz key2 bai key3 28
  • mget key1 key2 key3
  • 对应的亦有msetnx和mgetex方法
  • 一次性设置和取值的getset方法
  • set key4 cc
  • getset key4 changchun 返回旧值并设置新值的方法
  • incr和decr方法:对某一个值进行递增和递减
  • incrby和decrby方法:对某个值进行指定长度的递增和递减
  • append [name]方法:字符串追加方法
  • strlen [name]方法:获取字符串长度

Hash

Hash类型是String类型的field和value映射表,或者说一个String集合。特别适合与存储对象,相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。

  • hset myhash field1 hello 含义:hset是hash集合,myhash是集合名字,field1是字段名,hello是字段值。
  • hget myhash field1 获取内容,也可以存储多个值。
  • 同样hmset可以进行批量存储多个键值对,hmset myhash sex nan addr beijing,也可使用hmget进行批量获取多个键值对,hsetnx、setnx等。
  • hincrby和hdecrby 集合递增和递减
  • hexists 是否存在key,如果存在返回,不存在返回0
  • hlen 返回hash集合里的所有键数值
  • hdel 删除指定hash的field
  • hkeys 返回hash里所有的字段
  • hvals 返回hash里所有的value
  • hgetall 返回hash里所有的key和value

List

List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更详细地说,List类型是一个双端链表结构。我们可以通过相关操作进行集合的头部或尾部添加删除元素,List的设计非常简单巧妙,既可以作为栈,又可以作为队列,满足绝大多数需求。

  • lpush方法:从头部加入元素(栈)先进后出
  • 形如:lpush list1 "hello" lpush list1 "world"
  • lrange list1 0 -1(表示从头取到末尾)
  • rpushs方法:从尾部加入元素(队列)先进先出
  • 形如:rpush list2 "xi'an" rpush list2 "xidian"
  • lrange list2 0 -1
  • linsert方法:插入元素
  • 形如:linsert list3 before [集合的元素] [插入的元素]

Set ZSet

Set集合是String类型的无序集合,set通过hashtable实现,对集合我们可以取交集、并集、差集。

  • smembers方法:查询集合所有元素
  • sadd方法:向名称为key的set中添加元素
  • srem方法 :删除set集合元素
  • spop方法:随机返回删除的key
  • sdiff方法:返回两个集合的不同元素(哪个集合在前面就以哪个集合为标准)
  • sdiffstore方法:将返回的不同元素存储到另外一个集合里
  • sdiffsotre set3 set1 set2 将set1和set2不同元素存储到set3集合里
  • sinter方法:返回交集
  • sinterstore方法:返回交集并存储到另一个集合里
  • sunion方法:返回并集
  • sunionstore方法:返回并集并存储到另一个集合里
  • smove方法:从一个set集合移动到另一个集合
  • smove set1 set2 a 将a元素从set1挪到set2(剪切)
  • scard方法:查看集合里元素的个数
  • sismember方法:判断某元素是否为集合中的元素,返回1代表是,返回0代表否
  • srandmember方法:随机返回一个元素
  • zadd方法:向有序集合中添加一个元素,该元素如果存在,则更新顺序
  • zrem方法:删除名称为key的zset中的元素
  • zincrby 以指定值去自动递增或者减少
  • zrangebyscore 找到指定区间范围的数据进行返回zrangebyscore zset1 0 3 withscores
  • zremrangebyrank 删除1到1(只删除索引1)
  • zremrangebyscore 删除指定序号
  • zrank 返回排序索引,从小到大(升序排序之后再找索引)
  • zrevrank 返回排序索引,从大到小(降序排序之后再找索引)