Redis知识点速查

2018-04-10 14:35:43 浏览数 (1)

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按日志的记录操作
  • 无持久化

0 人点赞