Redis的基本用法以及场景分析

Redis(Remote Dictionary Server)redis

简介:

Redis 是彻底开源的,遵照 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其余 key - value 缓存产品有如下三个特色:数据库

一、Redis支持数据的持久化,能够将内存中的数据保存在磁盘中,重启的时候能够再次加载进行使用。
二、Redis不单单支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
三、Redis支持数据的备份,即master-slave模式的数据备份。缓存

1、String

Redis 字符串数据类型的相关命令用于管理 redis 字符串值markdown

类比Java:HasMap<String, Object>数据结构

Object -->分布式

一、字符串(String)

  • 基本操做:oop

    SET --存入一个字符串键 SETNX --存入一个字符串键,若Key存在则操做失败 GET --获取指定Key的字符串 MSET --批量存入字符串键 MGET --批量获取指定Key的字符串 DEL --删除指定Key(全部类型均可以使用此命令) 123456性能

  • 应用场景:
    (1)、分布式锁:SETNX(Key, Value),释放锁:DEL(Key)spa

二、数值(Number)

  • 基本操做:.net

    INCRBY Key increment --对Key进行数值相加,key不存在则新建 DECRBY Key decrement --对Key进行数值相减,key不存在则新建 INCR Key --对Key进行自加1,key不存在则新建 DECR Key --对Key进行自减1,key不存在则新建 1234

  • 应用场景:
    (1)、文章的浏览量,视频的观看量
    (2)、全局序列

三、二进制(bit)

  • 基本操做:

    GETBIT Key offset --获取Key下标offset的值 SETBIT Key offset value --对Key下标offset进行设值 BITCOUNT Key [start] [end] --统计start到end位置设值为1的数量 BITOPS op destkey [key...] --对多个key进行位计算op(AND/OR/XOR/NOT) 1234

  • 应用场景:
    (1)、存储图片
    (2)、用户在线统计

2、HashMap

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象

类比Java:HashMap<String, HashMap<String, Object>>

key - field - value 结构

  • 基本操做:

    HSET --存入一个key filed 散列结构 HSETNX --存入一个key field,若key中filed已经存在则操做失败 HGET --获取指定key field HMSET --批量存入key filed HMGET --批量获取key filed HDEL --删除指定Key filed HINCRBY --对key field的数值进行加减操做 1234567

  • 优势:
    (1)、将信息凝聚在一块儿,便于管理
    (2)、从必定上避免误操做,减小key冲突
    (3)、减小内存/IO/CPU的消耗

  • 应用场景:
    (1)、购物车功能

3、List

Redis列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素到列表的头部(左边)或者尾部(右边)

类比Java:HasMap<String, List>

  • 基本操做:

    LPUSH Key value [value...] --往key的列表键中左边放入一个元素,key不存在则新建 RPUSH Key value [value...] --往key的列表键中右边放入一个元素,key不存在则新建 LPOP Key --从key的列表键最左端弹出一个元素 RPOP Key --从key的列表键最右端弹出一个元素 LRANGE Key start stop --获取列表键从start下标到stop下标的元素 BLPOP Key [Key...] timeout --阻塞的从key的列表键最左端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞

    BRPOP Key [Key...] timeout --阻塞的从key的列表键最右端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞 12345678

  • 应用场景:
    (1)、消息队列
    (2)、新闻推荐

4、Set

Redis 的 Set 是 String 类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据

类比Java:HasMap<String, HashSet>

  • 基本操做:

    SADD Key member [member...] --往集合键key中存放元素,若key不存在则新建 SREM Key member [member...] --从集合键key中删除元素 SMEMBERS Key --获取集合键key中的全部元素 SCARD Key --获取集合键key中的元素个数 SISMEMBER Key member --判断{member}元素是否存在于集合键key中 SRANDMEMBER Key [count] --从集合键key中选出{count}个元素,不从集合键key中删除 SPOP Key [count] --从集合键key中选出{count}个元素,而且从集合键key中删除 1234567

  • 应用场景:
    (1)、抽奖
    (2)、点赞,转发,收藏

  • 集合运算:

    SINTER Key [Key...] --交集运算 SINTERSTORE destination key [key...] --交集运算,运算结果保存在集合键destination中 SUNION Key [Key...] --并集运算 SUNIONSTORE destination Key [Key...] --并集运算,运算结果保存在集合键destination中 SDIFF Key [Key...] --差集运算 SDIFFSTORE destination key [key...] --差集运算,运算结果保存在集合键destination中 123456

  • 应用场景:
    (1)、共同关注
    (2)、可能认识的人
    (3)、我关注的人也关注了他
    (4)、商品筛选

5、ZSet

Redis 有序集合和集合同样也是 string 类型元素的集合,且不容许重复的成员

  • 基本操做:

    ZADD Key score element [...] --往有序集合键key中存放元素,若key不存在则新建 ZREM Key element [element...] --从有序集合键key中删除元素 ZSCORE Key element --获取有序集合键key中{element}元素的score值 ZINCRBY Key increment element --给有序集合键key中{element}元素进行score值操做,若key不存在则新建,{element}元素不存在则新增后进行score值操做 ZCARD Key --获取有序集合键key中元素个数 ZRANGE Key start stop [WITHSCORES] --正序获取有序集合键key中从start下标到end下标的元素 ZREVRANGE Key start stop [WITHSCORES] --倒序获取有序集合键key中从start下标到end下标的元素 1234567

  • 集合运算:

    ZUNIONSTORE destkey numkeys key [key...] --并集运算 ZINTERSTORE destkey numkeys key [key...] --交集运算 12

  • 应用场景:
    (1)、排行榜,热搜榜
    (2)、周榜,月榜,年榜

如您在阅读中发现不足,欢迎留言!!!

原文连接:blog.csdn.net/qq\_4006577…?

相关文章
相关标签/搜索