02.Redis 的介绍以及相关数据类型

1.redis相关介绍

redis中文网

1.1 redis的介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) 与范围查询, bitmapshyperloglogs地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting)LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

image-20210211203040301

1.2 .redis和memcached的区别

redis和memcached相比本质是解耦,用大数据说法是计算向数据移动

image-20210218095611832

1.3 . liunx下常见的redis命令
#连接redis
redis-cli
#连接redis是6379端口的8号库 指定库(不同库数据不可见)
redis-cli -p 6379 -n 8
#连接redis后使用help进行查询
help 

2.redis相关数据的操作常见命令

在redis客户端中使用help命令进行相关查询相关命令

2.1 Strings类型

Strings 数据操作相关文档

2.1.1 查看string类型帮助命令
help @string

image-20210219155031906

2.1.2 string数据类型及相关的应用场景
  1. 字符串
#set设置key的value
set k1 ooxx nx  (带nx,xx可用在分布式锁中)
set k1 ooxx xx
#mset批量设置
mset k3 k3mest k4 k4mest
#get获取key的value
get k1
#mget批量获取
mget k3 k4
#APPEND在字符串后面追加
append k1 " world"
#GETRANGE获取指定范围数据
getrange k1 5 10
#strlen获取字符串长度
strlen k1

image-20210219155108071

image-20210219160021217

image-20210219160343269

image-20210219160751857

  1. 数值
incr  将value的整数型+1
incrby 将value的整数型加指定数
decr 
descby

应用场景 : 抢购,秒杀,详情页,点赞,评论规避并发下,对数据库的事务操作完全由redis内存操作代替,避免因数据库事务导致响应时间超时,但在银行等金融涉及金额不要放在redis中进行相关计算

  1. bitmap

    setbit  //设置bit数值
    bitcount  
    bitpos
    bitop
    

应用场景

1. 统计用户登陆天数

	方案:用户id为key,设计长度为9bit的数据即可存储用户当年所有登陆天数数据,当天登陆为1,即可统计指定时间段的相关数据

2. 统计当天所有用户登陆情况

	方案:日期为Key,设计一个合适长度的数据存储,每一位对应一位客户,登陆则为1,统计时直接进行二进制与运算,则可以去重,统计那些用户登陆
2.2 Lists类型
2.2.1 Lists常见命令

Lists数据相关操作命令

#lpush 存放顺序为f e d c b a
lpush k1 a b c d e f
#rpush 存放顺序为a b c d e f
rpush k2 a b c d e f
#取数据 lpop
lpop k1 
#lrange按照范围取
lrange k1 0 -1(取全部)
#lindex
#lset

image-20210219205233457

2.2.2应用场景
  1. 使用lpush模拟栈,后进先出
  2. 使用rpush模拟队列,先进先出(买票排队问题)
  3. lindex模拟数组,直接根据下标取相关数据
  4. blpop模拟阻塞单播队列(blpop会让对应key有则弹出value,没有会阻塞等待key有值,并且只会弹出一次,当多个客户端同时对一个key使用blpop则可以实现阻塞单播)
2.3 hashes类型

类似java中的hashmap(key,hashmap(key,value))。这里面第一个key是hashes的key,hashmap(key,value)才是value

2.3.1 hashes常见命令

hashes常见的命令

hdel
hget
hset
hlen
hincrbyfloat
2.3.2 应用场景:
  1. 对员工薪水进行统计
2.4 sets数据类型

Redis Set 是 String 的无序排列。SADD 指令把新的元素添加到 set 中。对 set 也可做一些其他的操作,比如测试一个给定的元素是否存在,对不同 set 取交集,并集或差,等等。

2.4.1常见命令
sadd //添加元素sadd myset 1 2 3smembers //读取集合元素smembers mysetsismember //判断元素存在sismember myset 3 //存在返回1,不存在为0 SINTER  //获取多个集合的交集 SUNIONSTORE  //多个集合取并集
2.4.2 应用场景
  1. 公平抽奖(随机事件) : SRANDMEMBER key count(用户作为value)

    ​ 正数:取出一个去重的结果集(不能超过已有集)

    ​ 负数:取出一个带重复的结果集,一定满足你要的数量如果:

    ​ 0,不返回

2.5 sorted sets数据类型
2.5.1 常见命令

sorted sets常见命令

zaddzmenmberzinterzscore //按照什么排序
2.5.2 排序底层实现

通过Skip list(跳跃表)实现增删查改

image-20210220102659707

posted @ 2021-06-07 17:40  知白守黑,和光同尘  阅读(49)  评论(0编辑  收藏  举报