Redis学习笔记

Redis学习笔记

Redis介绍

1、一次只执行一条命令
2、不要执行长命令,如Keys、flushall、flushdb、slow lua script、mutil/exec、operate、big value(collection)

3、不是单线程
fysnc file descriptor
close file descriptor

单线程:
1、纯内存,数据都放在内存中
2、非阻塞IO
3、避免了线程切换和竞态消耗

Redis API

通用命令

keys

  • keys * :列出所有key
  • keys [pattern]:

一般不在生产环境使用,因为key会比较多,而redis是单线程的,时间复杂度是O(N);

dbsize

计算key的总数,时间复杂度是O(1),因为redis内置了计数器去记录Key的总数;

exists key

指定的key是否存在,存在返回1,不存在返回0;时间复杂度为O(1);

del key [key …]

删除指定的key-value;成功删除返回1,否则返回0;

expire key seconds

key在seconds秒后过期;

ttl key:查看key剩余的过期时间;返回-1代表key存在且没有过期时间;

persist key:去掉key的过期时间,让key成为不过期的key;

type key

返回key的类型;

常见命令的复杂度

上面提到的命令,但是没有列出来的,其时间复杂度都是O(1);
Redis学习笔记_第1张图片

数据结构和内部实现

Redis学习笔记_第2张图片

Redis学习笔记_第3张图片

Redis数据结构

字符串

key是字符串,但是

最大是512MB,

缓存、计数器、分布式锁

get key:获取key对应的value,O(1);
set key value:设置key-value;
del key:删除key-value;
incr key:key自增1,如果key不存在,自增后get(key)=1,O(1)
der key:key自减1,如果key不存在,自增后get(key)=-1,O(1)
incrby key k:key自增k,如果key不存在,自增后get(key)=k,O(1)
decr key k:key自减k,如果key不存在,自减后get(key)=-k,O(1)
set key value:不管Key是否存在,都设置
setnx key value:Key不存在,才设置
set key value xx:key存在,才设置

mget:批量获取key,原子操作,节省了网络开销
mset:批量设置value,原子操作

Redis学习笔记_第4张图片
Redis学习笔记_第5张图片
Redis学习笔记_第6张图片

应用

记录用户主页的访问量
incr userid:pageview(单线程,无竞争)

分布式id生成器

哈希(Hash)

结构

Redis学习笔记_第7张图片

API

Redis学习笔记_第8张图片
Redis学习笔记_第9张图片
Redis学习笔记_第10张图片

Redis学习笔记_第11张图片

Redis学习笔记_第12张图片
Redis学习笔记_第13张图片
Redis学习笔记_第14张图片

列表

Redis学习笔记_第15张图片
Redis学习笔记_第16张图片
Redis学习笔记_第17张图片
Redis学习笔记_第18张图片
Redis学习笔记_第19张图片
Redis学习笔记_第20张图片
Redis学习笔记_第21张图片
Redis学习笔记_第22张图片
Redis学习笔记_第23张图片
Redis学习笔记_第24张图片
Redis学习笔记_第25张图片
Redis学习笔记_第26张图片
Redis学习笔记_第27张图片

Java客户端Jedis

Jedis使用

Redis学习笔记_第28张图片
Redis学习笔记_第29张图片
Redis学习笔记_第30张图片
Redis学习笔记_第31张图片
Redis学习笔记_第32张图片
Redis学习笔记_第33张图片

Jedis连接优化

Redis学习笔记_第34张图片
Redis学习笔记_第35张图片

Redis学习笔记_第36张图片

Redis学习笔记_第37张图片

Redis的其它功能

慢查询

声明周期
Redis学习笔记_第38张图片

两个配置

Redis学习笔记_第39张图片
Redis学习笔记_第40张图片

配置方法
Redis学习笔记_第41张图片

三个命令
Redis学习笔记_第42张图片

Redis学习笔记_第43张图片

Pipeline

Redis学习笔记_第44张图片

Redis学习笔记_第45张图片
Redis学习笔记_第46张图片

Java实现

Redis学习笔记_第47张图片

发布订阅

Redis学习笔记_第48张图片
Redis学习笔记_第49张图片
Redis学习笔记_第50张图片
Redis学习笔记_第51张图片
Redis学习笔记_第52张图片

消息队列
Redis学习笔记_第53张图片

你可能感兴趣的:(Java,redis,学习,缓存,数据库)