Redis五种常用数据类型

走远了吗. 提交于 2020-01-15 00:46:35

string

  • 字符串常用操作

    1.存入字符串键值对

     SET key value

    2.批量存储字符串键值对

     MSET key value [key value ...]

    3.获取一个字符串键值

     GET key

    4.批量获取字符串键值

     MGET key [key ...]

    5.删除一个键

     DEL key [key ...]

    6.设置一个键的过期时间(秒)

     EXPIRE key seconds

 

  • 原子加减

    1.将key中存储的数字值加一

     INCR key

    2.将key中存储的数字值减一

     DECR key

    3.将key所存储的值加上increment

    INCRBY key increment

    4.将key所存储的值减去decrement

    DECRBY key decrement

 

  • 单值缓存

    SET key value

    GET key

 

  • 对象缓存

    1.SET user:1 value(json格式数据)

    2.MSET user:1:name test user:1:balance 10086

    MGET user:1:name user:1:balance

 

  • 分布式锁

    SETNX product:10001 true 			//返回1代表获取锁成功
    SETNX product:10001 true 			//返回0代表获取锁失败
    ....执行业务操作
    DEL product:10001 		 			//执行完业务释放锁
    
    SET product:10001 true ex 10 nx 	//防止程序意外终止导致死锁
    

      

     

  • 计数器

    INCR article:readcount:{文章id}

    GET article:readcount:{文章id}

 

  • Web集群session共享

    spring session + redis 实现session共享

 

  • 分布式系统全局序列号

    //redis批量生成序列号提升性能
    INCRBY orderId 1000

 

hash

  • hash常用操作

    1.存储一个哈希表key的键值

    HSET key field value

    2.获取一个不存在的哈希表key的键值

    HSETNX key field value

    3.在一个哈希表key中存储多个键值对

    HMSET key field value [field value ...]

    4.获取哈希表key对应的field键值

    HGET key field

    5.批量获取哈希表key中多个field键值

    HMGET key field [field ...]

    6.删除哈希表key中的field键值

    HDEL key field [field ..]

    7.返回哈希表key中field数量

    HLEN key

    8.返回哈希表key中所有的键值

    HGETALL key

    9.为哈希表key中field键的值加上增量increment

    HINCRBY key field increment

 

  • 对象缓存 (类似map)

    HMSET user {userId}:name test {userId}:age 10
    
    HMGET user 1:name 1:age

list

  • list常用操作

    1.将一个或多个值value插入到key列表的表头(最左边)

    LPUSH key value [value ...]

    2.将一个或多个值value插入到key列表的表尾(最右边)

    RPUSH key value [value ...]

    3.移除并返回key列表的头元素

    LPOP key

    4.移除并返回key列表尾头元素

    RPOP key

    5.返回列表key中指定区间内的元素,区间以偏移量start和stop指定

    LRANGE key start stop

    6.从key列表表头弹出一个元素,若列表中没有元素,阻塞则等待timeout秒,如果timeout=0,一直阻塞等待

    BLPOP key [key ...] timeout

    7.从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待

    BRPOP key [key ...] timeout

 

set

  • set 常用操作

    1.往集合key中存入元素,元素存在则忽略,若key不存在则新建 SADD key member [member ...]

    2.从集合key中删除元素 SREM key member [member ...]

    3.获取集合key中的所有元素 SMEMBERS key

    4.获取集合key的元素个数 SCARD key

    5.判断member元素是否存在于集合key中 SISMEMBER key member

    6.从集合key中选出count个元素,元素不从key中不删除 SRANDMEMBER key [count]

    7.从集合key中选出count个元素,元素不从key中删除 SPOP key [count]

  • set运算操作

    1.交集运算 SINTER [key ...]

    2.将交集结果存入新集合destination中 SINTERSTORE destination key [key ...]

    3.并集运算 SUNION key [key ...]

    4.将并集结果存入新集合destination中 SUNIONSTORE destination key [key ...]

    5.差集运算 SDIFF key [key ...]

    6.将差集结果存入新集合destination中 SDIFFSTORE destionation key [key ...]

 

sorted Set(zSet)

  有序集合(sorted set)和集合(set)都不允许重复的成员;不同的是每个元素都会关联一个double类型的分数;redis正是通过分数来为集合中的成员进行从小到大的排序;有序集合的成员是唯一的,但分数(score)却可以重复;zSet的api与Set的api大致相同;

  1.向有序集合添加一个或多个成员,或者更新已存在成员的分数

     ZADD key score1 member1 [score2 member2] 2.通过索引区间返回有序集合指定区间内的成员 ZRANGE key start stop [WITHSCORES]

  3.移除有序集合中的一个或多个成员

     ZREM key member [member ...]

  4.通过分数返回有序集合指定区间内的成员

     ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

  5.返回有序集合中指定成员的索引

     ZRANK key member,其中member按score值递增(从⼩到⼤)

 

 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!