1. redis核心数据结构实战与高性能原理剖析

分布式缓存技术Redis

  • Redis的五种数据结构
    • 1.1 String
  • 1. Redis的单线程和高性能

本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。

课程内容:

1、Redis核心数据结构精讲

2、微博与微信消息流Redis实现

3、微信点赞、收藏与标签基于Redis实现

4、微博与微信朋友关注模型基于Redis实现

5、电商购物车如何用Redis实现

6、电商推荐系统如何用Redis实现

7、Redis高性能核心原理剖析、Redis 6.0多线程模型初探

redis安装步骤:https://blog.csdn.net/Ding_JunXia/article/details/131112871

Redis的五种数据结构

1.1 String

可以直接去官方文档查看使用方法,也可以使用命令行查看帮助help @String
1. redis核心数据结构实战与高性能原理剖析_第1张图片
1. 字符串常用操作:

set key value 存入字符串键值对
mset key value[key value…] 批量存储字符串键值对
setnx key value 存入一个不存在的字符串键值对
get key 获取一个字符串键值
mget key [key…] 批量获取字符串键值
del key [key…] 删除一个键
expire key seconds 设置一个键的过期时间(秒)

2. 原子加减

incr key 将key中存储的数字值加1
decr key 将key中存储的数字值减1
incrby key increment 将key所存储的值加上increment
decrby key decrement 将key所存储的值减去decrement

3. 应用场景

  • 单值缓存
    set key value
    get key

  • 对象缓存

    • set user:1 value(json格式数据)
    • mset user:1:name ding user:1:balance 1888
      mget user:1:name user:1:balance
  • 分布式锁

setnx product:10001 true 返回1代表获取锁成功
setnx product:10001 true 返回0代表获取锁失败
del product:10001 执行完业务释放锁
set product:10001 true ex 10 nx 防止程序意外终止导致死锁
  • 计数器
    incr article:readcount:{文章id}
    get article:readcount:{文章id}

  • web集群session共享
    spring session + redis实现session共享

  • 分布式系统全局序列号
    incrby orderId 1000 //redis批量生成序列号提升性能

  1. hash
  2. list
  3. set

1. Redis的单线程和高性能

Redis是单线程吗?

Redis的单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。但Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。

Redis 单线程为什么还能这么快?

因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为Redis是单线程,所以要小心使用Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致Redis 卡顿。

Redis单线程如何出路那么多的并发客户端连接?

你可能感兴趣的:(redis,java)