Redis篇2-五大数据类型

redis支持string、list、set、zset和hash五大数据类型,但是他们的操作语法不一致..以下粗略过一遍。

String类型(字符串)

简单说明

  • 最基本的数据类型,和Memcached一样
  • 单值单value,类比Java的Map<String, String>。
  • 二进制安全的,redis的string可以包含任意字符串数据,比如jpg图片内容和序列化的对象都可以。
  • 理论上,redis的string的value可以很大,最多512M。

常用操作

  • set key value 定义/覆盖一个字符串键值
  • get key 获取键的字符串值
  • del key 删除键值
  • appen key value 值append
  • strlen key 值的长度
  • exists key 判断某个key是否存在
  • move key n 将当前库的key迁移到n号数据库
  • expire key n 给key设置过期时间为n秒
    过期之后get keykeys * 就看不到了,相当于删掉了
  • ttl kyc 查看目标key还有多久过期
    -1代表永不过期(默认),-2代表已过期
  • type key 查看键的类型,比如string
  • incr key 对值进行+1,只对数字型的值有效
  • decr key 对值进行-1,只对数字型的值有效
  • incrby key n 对值进行+n,只对数字型的值有效
  • decrby key n 对值进行-n,只对数字型的值有效
  • getrange key 0 3 获取指定区间的值(前4个字符),即substr,getrange key 0 -1 表示获取全部
  • setrange key .. 设置指定区间的值
  • setex key n value 定义一个键值且同时设置好过期时间(n为秒值)
  • setnx key value 如果键不存在才创建,即set if not exist,避免覆盖
  • mset/mget/msetnx 同时定义/获取多个键值
    mset k1 v1 k2 v2 k3 v3
    mget k1 k2 k3
    msetnx k3 v3 k4 v4 #注:k3已存在,本次失败,k4也不会创建
    
  • ...

List类型(列表)

简单说明

  • 单值多value,类比Java的Map<string, List>
  • 是一个字符串链表,左右两边都可以操作
  • 如果键不存在,新建链表,存在则追加元素
  • 如果值的多个value全部被移除,对应的键自动移除

常用操作

  • lpush/rpush/lrange 定义和获取一个list键值
    lpush l1 v4 v3 v2 v1 #从左push
    rpush l1 v5 v6 v7 v8 #从右push
    lrange l1 0 -1 #获取l1值
    lrange l1 0 4 #范围获取l1值
    
  • lpop/rpop key 从从左/右边出栈(pull掉并返回)
  • llen key 列表元素个数
  • lindex key value 类比String的indexOf函数
  • ...

Set类型(无序去重列表)

简单说明

  • 和List差别不大,单值多value,类比Java的Map<String, Set>
  • 无序无重复,底层是Hashtable

常用操作

  • sadd key values .. 定义Set键值
  • smembers key 遍历set键值
  • sismember key value 判断是否有某值
    madd s1 1 2 3 2 3
    smembers s1
    sismember s1 1
    sismember s1 x
    
  • scard key set集合元素个数
  • srem key value 移除某个value
  • spop key 随机一个出栈
  • srandmember key n 随机n个出栈
  • ...

Zset类型(有序集合)

简单说明

  • 即Sorted Set,和Set一样,无序无重复,类比Java的Map<String, ScoreSet>
  • 会给每个元素关联一个double类型的分数score
  • zset成员元素不能重复,而这个score可以重复
  • 排序即通过每个成员的score值从小到大排的
  • 多用于一些统计场景

常用操作

  • zadd/zrange
zadd z01 60 C 70 B 80 A 90 S
zrange z01 0 -1
zrange z01 0 -1 withscores
  • ...

Hash类型(散列)

简单说明

  • 单值多value,类比Java中的Map<String,<String, Object>
  • 可以当作是在redis中进行Java对象的定义

常用操作

  • hset/hget/hmset/hmget/hgetall/hdel 定义,获取,删除
hset user0 id 1 nane hwc1
hget user0 id
hgetall user0
hdel user0 id
  • hlen key “对象的属性”个数
  • hexists key0 key1 是否存在某个“属性”
  • hkeys/hvals key0 遍历“对象”属性/值
  • ...
posted @ 2019-09-08 18:04  summaster  阅读(167)  评论(0编辑  收藏  举报