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 age 21
  • 取值
    • hget myhash username
    • hmget myhash username age
    • hgetall myhash
  • 删除
    • hdel myhash2 username age
  • 增加数字
    • hincrby myhash age 5
  • 存在
    • hexists myhash username
  • 得到key,value,和长度
    • hlen myhash
    • hkeys myhash
    • hvals myhash

存储list

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

存储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 mysort 70 a 80 b 90 c分数+实际元素,元素存在的话则用新的分数替代原来的分数
  • zscore mysort a 获取分数
  • zcard mysort 长度
  • zrange mysort 0 -1
  • zreverange
  • zremrangebyrank mysort 0 4
  • zremrangebyscore mysort 80 100
  • zadd mysort
  • zrangebyscore mysore 0 100 withscores limit 0 2
  • zincrby mysort 3 ls
  • 场景:
    • 大型在线游戏积分排行榜
    • 检索索引数据

通用操作

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

应用场景

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

客户端

Java语言用Jedis

事务

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

持久化

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

关于我:

linxinzhe,全栈工程师,目前供职于某世界500强银行的金融科技部门(人工智能,区块链)。

GitHub:https://github.com/linxinzhe

欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!

    原文作者:linxinzhe
    原文地址: https://www.jianshu.com/p/ad71c2aabdb3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞