Redis知识点速查

时间:2022-05-07
本文章向大家介绍Redis知识点速查,主要内容包括NoSQL概述、NoSQL数据库分类、NoSQL特点、Redis概述、应用场景、客户端、事务、持久化、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

NoSQL概述

为什么需要NoSQL

  • 高并发读写
  • 海量数据的高效率存储和访问
  • 高可扩展性和高可用性

NoSQL数据库分类

  • 键值存储。Redis
  • 列存储。HBase
  • 文档数据库。MongoDB
  • 图形数据库。

NoSQL特点

  • 易扩展
  • 大数据量,高性能
  • 灵活的数据模型
  • 高可用

Redis概述

支持的键值数据类型

  • 字符串(String)
  • 散列(hash)
  • 列表(list)
  • 集合(set)
  • 有序字符串集合(sorted set)

Key

  • 不要过长
  • 不要过短
  • 统一的命名规范

存储String

  • 底层是二进制存储的。二进制安全,存入和获取的数据相同
  • Value最大512MB
命令
  • 赋值 set
  • 取值 get
  • 删除 del
  • 数值增减 incrdecrincrby(+数字)decrby(++数字)
  • 扩展命令 append(返回的事字符串长度)

存储Hash

  • 赋值
    • hset myhash username jack
    • hmset myhash2 username rose age21
  • 取值
    • hget myhash username
    • hmget myhash username age
    • hgetall myhash
  • 删除
    • hdel myhash2 username age
  • 增加数字
    • hincrby myhash age5
  • 存在
    • hexists myhash username
  • 得到key,value,和长度
    • hlen myhash
    • hkeys myhash
    • hvals myhash

存储list

  • ArrayList数组存储
  • LinkedList双向链表存储
  • 双向链表增加删除数据
  • 常用命令:
    • lpushx mylist3 ax表示不存在不插入
    • linsert mylist before b11在b前插入11
    • rpoplpush mylist5 mylist6从5右边弹出押入6左边
    • lset mylist3mmm相当于list[3]=mmm
    • lrem mylist23从头到尾,删除2个3
    • lrem mylist-21从后到前,删除2个1
    • llen mylist
    • lrange mylist05看0到5的元素,可为负数表示从右边数起
    • lpop mylist头部弹出
    • rpop mylist尾部弹出
    • lpush mylist a b c
    • rpush mylist a b c
    • 两端添加
    • 两端弹出
    • 查看列表
    • 获取列表元素个数
    • 移除
    • 设置
    • 扩展命令
  • 场景:
    • 生产者消费者,队列

存储Set

  • sadd myset a b c
  • srem myset a b
  • smembers myset
  • sismember myset a
  • sdiff mya1 myb1
  • sinter mya2 myb2
  • sunion mya3 myb3
  • scard myset集合内数量
  • srandmember myset
  • sdiffstore my1 mya1 myb1把mya1和myb1差集存入mya1,类似的 sunionstoresinterstore
  • 场景:
    • 追踪唯一性的
    • 维护数据对象之间的关联

存储Sorted-Set

有序的集合

  • zadd mysort70a80b90c分数+实际元素,元素存在的话则用新的分数替代原来的分数
  • zscore mysort a 获取分数
  • zcard mysort 长度
  • zrange mysort0-1
  • zreverange
  • zremrangebyrank mysort04
  • zremrangebyscore mysort80100
  • zadd mysort
  • zrangebyscore mysore0100withscores limit02
  • zincrby mysort3ls
  • 场景:
    • 大型在线游戏积分排行榜
    • 检索索引数据

通用操作

  • 查看key
    • keys*
    • kyesmy?
  • exists
  • get
  • rename company newcompany
  • expire newcompany1000过期时间
  • ttl newcompany
  • type newcompany
  • type mylist

应用场景

  • 缓存
  • 任务队列
  • 网站访问统计
  • 数据过期处理
  • 应用排行榜
  • 分布式集群架构中的session分离

客户端

Java语言用Jedis

事务

  • multi开启事务, discard回滚, exec提交。
  • 事务串行,不会做其他事,保证严格原子性。失败后面会继续执行。

持久化

  • RDB按时间间隔持久化到硬盘
  • AOF按日志的记录操作
  • 无持久化