Redis基础(二) Redis的五大数据类型及常见操作命令

Redis的五大数据类型:String(字符串),hash(哈希,类似java里的Map),list(列表),set(集合),zset(sorted set:有序集合)。

String(字符串)


string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

操作命令

  1.  set/get/del/append/strlen  
  2. Incr/decr/incrby/decrby    一定要是数字才能进行加减(increase,加;decrease,减)
  3.  getrange/setrange  getrange:获取指定区间范围内的值,类似between......and的关系,从零到负一表示全部
    setrange设置指定区间范围内的值,格式是SETRANGE key offset value  用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。(range:范围)
  4.  setex(set with expire)键秒值/setnx(set if not exist)     setex:设置带过期时间的key,动态设置。setex 键 秒值 真实值 。setnx:只有在 key 不存在时设置 key 的值。
  5.  mset/mget/msetnx    mset:同时设置一个或多个 key-value 对。mget:获取所有(一个或多个)给定 key 的值。msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
  6.  getset(先get再set)   将给定 key 的值设为 value ,并返回 key 的旧值(old value)。简单一句话,先get然后立即set

Hash(哈希)


Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>

操作命令

  1.   hset/hget/hmset/hmget/hgetall/hdel   

  2.  hlen  元素个数

  3.  hexists key  field    判断在key里面的某个值的key是否存在

  4.  hkeys/hvals   获取全部key/value

  5.  hincrby/hincrbyfloat    一定要是数字才能进行加减(increase,加;decrease,减)

  6.  hsetnx  不存在赋值,存在不生效。

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表(有序,有重复)

操作命令

  1.  lpush/rpush/lrange   lpush/rpush存值 ,  lrange 取值
  2.  lpop/rpop  一次只弹出一个值 ,出栈之后list中就没了
  3.  lindex,按照索引下标获得元素(从上到下)
  4.  llen
  5.  lrem key  n  v1   删N个value, 从left往right删除n个值等于v1的元素,返回的值为实际删除的数量,
     LREM list3 0 v1,表示删除全部给定的值。零个就是全部值
  6.  ltrim key 开始index 结束index,截取指定范围的值后再赋值给key
  7.  rpoplpush 源列表 目的列表   从list01 中弹出一个值放到lsit02中
  8.  lset key index value
  9.  linsert key  before/after v1 v2     在v1的前面添加v2

list性能小结:list是一个字符串链表,left、right都可以插入添加;如果键不存在,创建新的链表;如果键已存在,新增内容;如果值全移除,对应的键也就消失了。链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

Set(集合)


Redis的Set是string类型的无序集合。它是通过HashTable实现实现的(无序,无重复)。

操作命令

  1.  sadd/smembers/sismember   sadd 存值 ,smembers取值,sismember判断set是否存在该值
  2.  scard,获取集合里面的元素个数
  3.  srem key value 删除集合中元素
  4.  srandmember key n(整数)     从set集合里面随机取出n个元素, 如果超过最大数量就全部取出,如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值。 

  5. spop key 随机出栈(出栈之后set中的该值就没了)

  6.  smove key1 key2  在key1里某个值      作用是将key1里的某个值赋给key2

  7.  数学集合类,差集:sdiff,交集:sinter,并集:sunion

           Redis基础(二) Redis的五大数据类型及常见操作命令

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

操作命令

  1.  zadd/zrange   在set基础上,加一个score值。set是k1 v1 v2 v3,zset是k1 score1 v1 score2 v2Redis基础(二) Redis的五大数据类型及常见操作命令
  2. ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT index count] Redis基础(二) Redis的五大数据类型及常见操作命令
  3. zrem key 某score下对应的value值,作用是删除元素
  4. zcard :获取集合中元素个数;zcount :获取分数区间内元素个数;zrank:                                                                            获取value在zset中的下标位置;        zscore:按照值获得对应的分数                                                                                 Redis基础(二) Redis的五大数据类型及常见操作命令
  5.  zrevrank key values值,作用是逆序获得下标值
  6.  zrevrange
  7.  zrevrangebyscore  key 结束score 开始score