Redis笔记-编程算法牛翰社区-数据算法-牛翰网

Redis笔记

  • NoSQL
  • Redis
  • Redis五大数据类型
    • Redis-Key
    • String
    • List
    • Set
    • Hash
    • ZSet
  • Redis三种特殊数据类型
    • Geospatial
    • HyperLogLog
    • BitMap
  • 事务
    • Jedis
    • Springboot整合
    • Redisconf详解
    • Redis持久化
    • Redis发布订阅
    • Redis主从复制
    • Redis缓存穿透和雪崩

NoSQL

Not only SQL,泛指非关系型数据库

实际业务中:NoSQL+RDBMS(e.g.阿里架构引进)

NoSQL数据库的四大分类:

  • KV键值对:Redis
  • 文档型数据库:MongoDB
  • 列存储数据库:HBase
  • 图形数据库:Neo4j

Redis

Remote Dictionary Server,远程字典服务,也被称之为结构化数据库

有16个数据库,默认使用第0个

清除所有数据:flushall

切换数据库:select 2

查看当前数据库的key数量:dbsize

Redis特点:

  • 数据类型丰富
  • 支持持久化
  • 集群
  • 事务

Redis单线程:

  • Redis是基于内存操作,CPU不是Redis性能瓶颈

Redis为什么单线程还这么快:

  • 误区:高性能的服务器一定是多线程的
  • Redis是将所有数据放在内存中,内存的读写速度非常快

Redis五大数据类型

Redis-Key

常用命令_菜鸟教程

全部命令_官方文档

String

90%的请求都是String类型

  • append:在字符串后追加
  • setex:设置带过期时间的key-value
  • setnx:设置key-value,只有key不存在时才设置
  • mset:设置多个key-value
  • msetnx:设置多个key-value,只有key不存在时才设置
  • getrange:获取字符串指定下标范围的值
  • setrange:设置字符串指定下标范围的值

List

可栈、队列、阻塞队列

  • lpush、rpush、lpop、rpop:元素的插入和删除
  • lrange:获取指定下标范围的元素
  • lindex:下标获取元素
  • llen:列表总长度

Set

不可重复的集合

  • sadd:添加元素
  • smembers:获取所有元素
  • sismember:判断元素是否存在
  • scard:获取集合中元素个数
  • srem:删除指定元素
  • srandmember:从集合中随机获取元素

Hash

Map集合,key-map。适合用于存储经常改变的对象

  • hset:设置key-map
  • hmset:设置多个key-map
  • hget:获取key-map
  • hgetall:获取所有key-value
  • hkeys:获取所有key
  • hvals:获取所有value
  • hdel:删除key-map
  • hlen:获取key-map长度

ZSet

有序的set集合(sorted set)

每个元素都会关联一个double类型的分数,通过分数进行排序

  • zadd:添加元素
  • zrange:获取指定下标范围的元素
  • zrangebyscore:根据分数获取元素
  • zrem:删除指定元素
  • zcount:获取指定分数范围的元素数量

Redis三种特殊数据类型

Geospatial

地理位置,存储经纬度

底层是Zset,可以用Zset的命令操作Geo

  • geoadd:添加地理位置,纬度_经度_名称
  • geopos:获取地理位置
  • geodist:计算两个位置之间的距离
  • geohash:将地理位置转换为hash值
  • georadius:指定经纬度为中心,某一半径内的元素
  • georadiusbymember:指定元素为中心,某一半径内的元素

HyperLogLog

基数统计,允许容错

不存储数据,只存储数据的数量

  • pfadd:添加元素
  • pfcount:获取元素数量
  • pfmerge:合并两个HyperLogLog

BitMap

位图,只有0和1两个状态

  • setbit:设置某key的值
  • getbit:获取某key的值
  • bitcount:统计定范围value为1的个数

事务

一组Redis命令的集合,不保证原子性(Redis命令保持原子性)

开启事务:

multi       //开启事务
...         //命令入队
exec        //执行事务

放弃事务:

discard     //放弃事务

watch监控:

  • 悲观锁:认为一定会出问题,上锁
  • 乐观锁:认为不会出问题,不上锁。更新时判断是否有人修改

Jedis

Redis官方推荐的java连接开发工具,使用Java操作Redis中间件

Springboot整合

Redisconf详解

Redis持久化

Redis发布订阅

Redis主从复制

Redis缓存穿透和雪崩

请登录后发表评论

    没有回复内容