天道酬勤,学无止境

Redis学习笔记——快速入门篇

redis快速入门

  • 1.redis概述
  • 2.redis常识问题
  • 3.五大数据类型
    • 3.1String类型
    • 3.2列表list
    • 3.3无序集合Set
    • 3.4有序集合Zset
    • 3.5哈希表Hash
  • 4.读懂redis的配置文件redis.conf
  • 5.redis的事务
    • 5.1理论

1.redis概述

Redis:REmote DIctionary Server(远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器。

Redis与其他key-value缓存产品有以下三个特点

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的 key-value 类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

2.redis常识问题

redis默认16个数据库,类似数组下标从零开始,初始默认使用零号库。

在redis的配置文件redis.conf中,可以查看数据库的默认配置!!!

Select命令切换数据库

select 7 #切换到第七个数据库

Dbsize查看当前数据库的key的数量

DBSIZE

Flushdb:清空当前库
Flushall:清空全部的库

关于Key的一些操作

# 查看所有的key
keys * 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name haha
OK
127.0.0.1:6379> keys *
1) "name"
# exists key 的名字,判断某个key是否存在
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS name1
(integer) 0
# 移除当前库中的key
move key db ---> 当前库就没有了,被移除了
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
# 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
expire key 秒钟:
# ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
127.0.0.1:6379> set name haha
OK

常用命令说明:
127.0.0.1:6379> EXPIRE name 10
(integer) 1
127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) 2
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> keys *
(empty list or set)
# 查看你的key是什么类型
type key
127.0.0.1:6379> set name haha
OK
127.0.0.1:6379> get name
"haha"
127.0.0.1:6379> type name
string

更多redis命令

为什么redis是单线程

redis 6 之前的版本是单进程、单线程的,6版本之后支持多线程!!!

redis很快,是因为redis是基于内存的操作,CPU不是redis的瓶颈,redis
的瓶颈最有可能是机器内存的大小或者网络带宽!!!

先说两个误区:一、高性能的服务器不一定都是多进程、多线程的;二、多线程不一定都不比单线程快,比如单核机器。

在我们通常的认知中,高性能都是通过多进程、多线程实现的。比如Nginx是多进程单线程的,Memcached是单进程多线程的。

在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度。redis的操作都是基于内存的,绝大部分请求是纯粹的内存操作,非常迅速,使用单线程可以省去多线程时CPU上下文会切换的时间,也不用去考虑各种锁的问题,不存在加锁释放锁操作,没有死锁问题导致的性能消耗。对于内存系统来说,多次读写都是在一个CPU上,没有上下文切换效率就是最高的!既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章的采用单线程的方案了(毕竟采用多线程会有很多麻烦)。

3.五大数据类型

redis的用处

  • 作为数据库存储数据
  • 缓存
  • 消息中间件MQ

五种数据结构

  • String:字符串类型
  • List:列表类型
  • Set:无序集合类型
  • ZSet:有序集合类型
  • Hash:哈希表类型

本篇笔记仅对redis的基本操作进行总结,关于底层的实现,详见后续学习笔记!!!

3.1String类型

单值单value

常用操作、增删查

127.0.0.1:6379> set hello redis
OK
127.0.0.1:6379> get hello
"redis"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)

append、strlen

# hello不存在
127.0.0.1:6379> exists hello
(integer) 0
# # 对不存在的key进行APPEND,等同于 SET 语句
127.0.0.1:6379> append hello redis2
(integer) 6
127.0.0.1:6379> get hello
"redis2"
# 对已存在的key进行APPEND,直接在string后加内容
127.0.0.1:6379> append hello redis3
(integer) 12
127.0.0.1:6379> get hello
"redis2redis3"
127.0.0.1:6379> strlen hello
(integer) 12

incr、decr 加1、减1
incrby、decrby 加上、减去指定的增量值

String类型的value还可以存储数字

127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> get views
"1"

3.2列表list

lpush、rpush 添加list数据

#lpush:将一个或多个值插入到列表头部。(左)
#rpush:将一个或多个值插入到列表尾部。(右)
lpush list-key item
rpush list-key item

lrange、lindex 获取数据

#lrange:返回列表中指定区间内的元素,区间以偏移量START和STOP指定
lrange list-key start stop
#lindex:返回index位置的元素
lindex list-key 

lpop、rpop 删除list中的数据

#lpop 命令用于移除并返回列表的第一个元素。当列表 key 不存在时,返回nil 。
lpop list-key
#rpop 移除列表的最后一个元素,返回值为移除的元素。
rpop list-key

应用场景:
Redis list的应用场景非常多,也是Redis最重要的数据结构之一。我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。

3.3无序集合Set

单值多value

sadd 添加元素

# sadd 将一个或多个成员元素加入到集合中,不能重复
127.0.0.1:6379> sadd set a,b
(integer) 1
127.0.0.1:6379> sadd set c
(integer) 1
127.0.0.1:6379> sadd set d,eee,ff
(integer) 1

smembers 获取数据

# smembers 返回集合中的所有的成员。
127.0.0.1:6379> smembers set
1) "d,eee,ff"
2) "a,b"
3) "c"

sismember 判断成员元素是否是集合的成员。

127.0.0.1:6379> smembers set
1) "d,eee,ff"
2) "a,b"
3) "c"
127.0.0.1:6379> sismember set c
(integer) 1
127.0.0.1:6379> sismember set a
(integer) 0

应用场景:
Redis为集合提供了求交集、并集、差集等操作,故可以用来求共同好友等操作。

3.4有序集合Zset

zadd 添加数据

# 将一个或多个成员元素及其分数值加入到有序集当中。
127.0.0.1:6379> zadd zset 3 haha
(integer) 1
127.0.0.1:6379> zadd zset 1 ming 2 hong
(integer) 2

zrange 获取数据

# 返回有序集中,指定区间内的成员
127.0.0.1:6379> zrange zset 0 1
1) "ming"
2) "hong"
127.0.0.1:6379> zrange zset 0 -1
1) "ming"
2) "hong"
3) "haha"

zrangebyscore 返回分数score之间的数据

# 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)
次序排列。
127.0.0.1:6379> zrangebyscore zset 0 1
1) "ming"
127.0.0.1:6379> zrangebyscore zset 1 3
1) "ming"
2) "hong"
3) "haha"

zrem 删除数据

# 移除有序集中的一个或多个成员
127.0.0.1:6379> zrem zset hong
(integer) 1

应用场景
以某个条件为权重,比如按顶的次数排序,ZREVRANGE命令可以用来按照得分来获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。

3.5哈希表Hash

kv模式不变,但V是一个键值对

hset 添加元素

# hset key field value
127.0.0.1:6379> hset hash hash1 value1
(integer) 1
127.0.0.1:6379> hset hash hash1 value2
(integer) 0
127.0.0.1:6379> hset hash hash2 value2 hash3 value3
(integer) 2

hget 、hgetall 获取元素

# hget key field
127.0.0.1:6379> hget hash hash1
"value1"
# hgetall key
127.0.0.1:6379> hgetall hash
1) "hash1"
2) "value2"
3) "hash2"
4) "value2"
5) "hash3"
6) "value3"

hmset、hmget 对多个field-value对进行操作

# 同时将多个field-value对设置到哈希表中。会覆盖哈希表中已存在的字段。
127.0.0.1:6379> hmset mhash hash1 value1 hash2 value2
OK
127.0.0.1:6379> hmget mhash hash1 hash2
1) "value1"
2) "value2"

hdel 删除数据

# 用于删除哈希表key中的一个或多个指定字段
127.0.0.1:6379> hdel hash hash1 hash2
(integer) 2
127.0.0.1:6379> hgetall hash
1) "hash3"
2) "value3"

应用场景
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。存储部分变更的数据,如用户信息等。

4.读懂redis的配置文件redis.conf

配置文件开头就说了redis-server的使用

在这里插入图片描述
Redis启动的时候,通过配置文件来启动
命令:redis-server /usr/local/bin/myredis/redis.conf(配置文件的路径)

单位 Units

在这里插入图片描述

  • 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
  • 对大小写不敏感

includes 可以包含其他配置文件

在这里插入图片描述

network

bind 127.0.0.1 # 绑定的ip
protected-mode yes # 保护模式,是否受保护,默认开启
port 6379 # 默认端口

general 通用配置

# 默认情况下,Redis不作为守护进程运行。需要开启的话,改为 yes
daemonize yes 
# 可通过upstart和systemd管理Redis守护进程
supervised no 
# 以后台进程方式运行redis,则需要指定pid 文件
pidfile /var/run/redis_6379.pid 
# 日志级别。可选项有:
# debug(记录大量日志信息,适用于开发、测试阶段);
# verbose(较多日志信息);
# notice(适量日志信息,使用于生产环境);
# warning(仅有部分重要、关键信息才会被记录)。
loglevel notice
# 日志文件的位置,当指定为空字符串时,为标准输出
logfile "" 
# 设置数据库的数目。默认的数据库是DB 0
databases 16 
# 是否总是显示logo,开启redis服务那个logo
always-show-logo yes 

快照

什么是快照呢?快照是实现持久化的一种方法。快照,可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可!!!

# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
save 900 1
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
save 300 10
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 60 10000
stop-writes-on-bgsave-error yes # 持久化出现错误后,是否依然进行继续进行工作
rdbcompression yes # 使用压缩rdb文件 yes:压缩,但是需要一些cpu的消耗。no:不压
缩,需要更多的磁盘空间
rdbchecksum yes # 是否校验rdb文件,更有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗
dbfilename dump.rdb # dbfilenamerdb文件名称
dir ./ # dir 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录

注:rdb文件是持久化的文件(快照文件),它保存了redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份和灾难恢复。

security 安全

访问密码的查看,设置和取消

# 启动redis
# 连接客户端
# 获得和设置密码
config get requirepass
config set requirepass "123456"
#测试ping,发现需要验证
127.0.0.1:6379> ping
NOAUTH Authentication required.
# 验证
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG

客户端的一些限制

maxclients 10000 # 设置能连上redis的最大客户端连接数量
maxmemory <bytes> # redis配置的最大内存容量
maxmemory-policy noeviction # maxmemory-policy 内存达到上限的处理策略

6种处理策略

  • volatile-lru:利用LRU算法移除设置过期时间的key。
  • volatile-random:随机移除设置过期时间的key。
  • volatile-ttl:移除即将过期的key,根据最近过期时间来删除(辅以TTL)
  • allkeys-lru:利用LRU算法移除任何key。
  • allkeys-random:随机移除任何key。
  • noeviction:不移除任何key,只是返回一个写错误

appendonly 模式

默认使用rdb持久化方式,不开启aof模式

appendonly no # 是否以append only模式作为持久化方式
appendfilename "appendonly.aof" # appendfilename AOF 文件名称
appendfsync everysec # appendfsync aof持久化策略的配置

AOF持久化配置策略

  • no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
  • always表示每次写入都执行fsync,以保证数据同步到磁盘。
  • everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。

5.redis的事务

5.1理论

redis单条命令是保证原子性的,但是事务不保证原子性!!!

Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。
总结说:redis事务就是一次性顺序性排他性的执行一个队列中的一系列命令。

Redis事务没有隔离级别的概念:

批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行!

Redis不保证原子性:

Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。

Redis事务的三个阶段:

  • 开始事务multi
  • 命令入队
  • 执行事务exec

Redis事务相关命令如下:

watch key1 key2 ... #监视一个或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )
multi # 标记一个事务块的开始( queued )
exec # 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 )
discard # 取消事务,放弃事务块中的所有命令
unwatch # 取消watch对所有key的监控

Watch命令详解:

watch监控指令类似于乐观锁,在事务提交时,如果watch监控的多个KEY中任何KEY的值已经被其他客户端更改,则使用EXEC执行事务时,事务队列将不会被执行,同时返回Nullmulti-bulk应答以通知调用者事务执行失败。

测试watch命令的使用!!!

转账,A转给B100元,A有1000,B有0

正常执行成功!

127.0.0.1:6379> set A 1000
OK
127.0.0.1:6379> set B 0
OK
127.0.0.1:6379> watch A
OK
#事务正常结束,数据期间没有发生变动,这个时候就正常执行成功!!!
127.0.0.1:6379> multi  
OK
127.0.0.1:6379> decrby A 100
QUEUED
127.0.0.1:6379> incrby B 100
QUEUED
127.0.0.1:6379> exec
1) (integer) 900
2) (integer) 100

场景:小明去给账户充钱(A),充到1000;小红用账户的钱(A)给小李转账(B)100;俩人同时进行!!!

127.0.0.1:6379> get A
"900"
127.0.0.1:6379> set A 1000
OK
127.0.0.1:6379> watch A # 加锁
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby A 100
QUEUED
127.0.0.1:6379> incrby B 100
QUEUED
127.0.0.1:6379> exec
(nil)

在小红转账期间,加上watch乐观锁,小明给账户充钱了,小红转账失败!!!

:一但执行 EXEC 开启事务的执行后,无论事务使用执行成功, WARCH 对变量的监控都将被取消。
故当事务执行失败后,需重新执行WATCH命令对变量进行监控,并开启新的事务进行操作。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 2019年你必须了解的干货集锦
    2019年你必须了解的干货集锦 线程池的使用springboot集成swaggerspringboot中实现多数据源阿里云优惠券领取精美在线iconjava中的int与byte的转化如何解决http请求返回结果中文乱码使用javamelody进行web监控最牛程序员最爱逛的10大编程网站,你知道几个?-卓帆网git常用的操作分享一款不错的typora主体nginx反向代理http和websocketZip4j使用学习推荐软件、开发工具Alibaba Cloud Toolkit工具一键部署本地应用到ECS服务器springboot整合shiro应用jquery和vue对比ngrok搭建详细步骤新手到站长的必经之路(一)新手到站长的必经之路(二)新手到站长的必经之路(三)新手到站长的必经之路(四)idea快捷键Linux上,最常用的一批命令解析(10年精选)sublime text 3.2.1 3207注册(自行永久使用)方法【MySQL】数据库定时备份及删除定时删除linux指定目录下文件的脚本解决“/bin/bash^M: bad interpreter: No such file or directory”linux如何查看端口被哪个进程占用用awk进行nginx日志统计基于Java内存dump文件分析解决内存泄漏问题Fiddler抓包【5】
  • Bookmarks(三)
    Bookmarks 书签栏 tooltips提示效果,支持点击与经过显示,位置和效果可以自定义 - CSDN博客 疯狂的小萝卜头 - 博客园 【Kettle从零开始】第九弹之Kettle定时任务介绍 - RotKang - CSDN博客 Freemarker模版 Java开源Web开发框架分类列表 HTML5模板引擎 Thymeleaf 教程 - OPEN 开发经验库 Spring MVC视图层:thymeleaf vs. JSP - OPEN 开发经验库 thymeleaf 学习笔记-基础篇 - OPEN 开发经验库 HTML5模板引擎 Thymeleaf - OPEN 开发经验库 Freemarker中Configuration的setClassForTemplateLoading方法参数问题 - format丶 - 博客园 利用freemarker 静态化网页 - ajun_studio的专栏 - CSDN博客 关于Freemarker生成静态html文件及中文乱码的问题 - it_man的专栏 - CSDN博客 FreeMarker入门教程 - Raul·Fu - 博客园 最近在看的freemarker,个人认为有助于理解 - 老夫聊发少年狂 - CSDN博客 SpringMVC处理脚本,SQL注入问题 - 逍遥叹!! - 博客园 使用freemarker生成word
  • SpringBoot从入门到精通系列(专栏导航)
    本专栏基于Springboot2.2.3,配套自己写的代码例子,内容涉及配置用法,web,数据库,Redis,也涉及到企业级开发的消息队列,dubbo,单点登录,OAuth2,搜索引擎等方面,并有源码的简单分析,适合作为入门教程 对应SpringBoot系列博客专栏,例子代码下载,代码暂时托管于GitHub,在github上clone到本地既可,github下载中链接,本博客不定时更新 Spring框架:作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广。 Spring Boot:一款Spring系统的一款框架,是2014年推出的一款使Spring框架开发变得容易的框架。学过Spring框架的都知识,Spring框架难以避免地需要配置不少XMl,而使用Spring Boot框架的话,就可以使用注解开发,极大地简化基于Spring框架的开发。Spring Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring MVC的Web应用和REST服务开发。 本专栏基于Springboot2.0,配套自己写的代码例子,内容设计基本的配置用法,web,数据库,Redis,也涉及到企业级开发的消息队列,dubbo,搜索引擎等方面,并有源码的简单分析,适合作为入门教程
  • 阿里面经最新分享:Java面试指南/成长笔记(金三银四程序员必备)
    写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。 面经分享 今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢?同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴点击传送门 即可!! 一轮技术面(90分钟) hashmap和hashtable区别为什么会产生死锁jvm类加载java反射获取私有属性,改变值反射用途所用数据库项目难点,问题如何解决项目中遇到的问题项目中遇到的最难解决的地方 二轮技术面(120分钟) 讲项目数据库乐观锁使用如何分库分表MySQL极限HashMap源码设计一个线程安全的HashMap快排的实现,时间复杂度和空间复杂度会什么算法如何把项目变成SOA架构Spring源码,最深刻的模块,aop用途JVM内存模型垃圾回收机制项目中查看垃圾回收 三轮技术面(150分钟) ConcurrentHashMap底层原理?手写一个LRU(用LinkedHashMap)HashMap底层数据结构?JDK1.8中的HashMap为什么用红黑树不用普通的AVL树?为什么在8的时候链表变成树?为什么在6的时候从树退回链表?线程池7个参数
  • Java全栈体系路线(总结不易)
    文章目录 Java全栈工程师Java基础基础语法面向对象工具类集合框架序列化反射机制注解文件处理设计模式视频教程文档教程练习题面试题GUI模块多线程模块Socket模块JDBC模块数据库操作起步JDBC执行sql数据库进阶操作JDBC进阶视频教程文档教程 JVM教程基础实战并发编程视频教程文档教程 Javaweb(必须用html、css、js)Servlet(请求响应,域对象,会话追踪)Filter(过滤器的实现)Listener(监听器的实现)JSP(九大内置对象,EL表达式,JSTL标签库)基础视频推荐实战视频推荐文档教程实战项目 Maven JfinalJfinal文档教程Jfinal视频教程Jfinal实战 Redis为什么用Redis、Redis快再哪里 数据库关系型数据库MySQL学习MySQL的完美卸载MySQL面试题核心必看MySQL学习视频推荐 Oracle学习Oracle学习视频推荐 SQLServer学习SQLServer视频推荐 DB2学习DB2学习视频推荐 非关系型数据库MongoDB学习MongoDB学习视频推荐 Hbase学习Hbase学习视频推荐 Linux 基础环境搭建文档教程Linux学习视频推荐 Go语言Go语言基础教程Go语言实战教程 Java项目实战 Java全栈工程师 Java基础 《疯狂Java讲义》(第5版) 李刚 基础语法
  • 跨年季巨献!14W字!腾讯高工手写“Redis实战笔记”,高效储存让你的项目性能起飞!
    前言 大家知道redis是目前互联网世界最为流行的Not Only SQL数据库,redis在互联网行业的应用是非常非常广泛的,因为它有着非常恐怖的响应速度,速度可以说是远远超过数据库的,所以很多项目中都会应用上redis,可以极大的提高性能,减低项目中的储存压力。 所以说学好redis是多么的重要,现在去面试,redis的相关技术问题肯定是必问的,或者说参与项目时,你能够熟练的应用redis,会为你增添不少色彩。这份“redis实战笔记”,以绝对专业的理论+实战带你学习redis。 有需要的朋友可以一键三连之后【见下图】添加上我的小助手即可获取到了 先给大家分享一个超实用的redis学习路线: 该笔记从基础、核心概念、进阶、实战四个维度带你学习redis Part1:redis基础知识(入门篇) ①初识redis(redis简介+redis数据结构简介+你好redis) ②使用redis构建web应用(登录和cookie缓存+使用redis实现购物车+网页缓存+数据行缓存+网页分析) Part2:核心概念(带你快速入门) ①redis命令(字符串+列表+集合+散列+有序集合+发布和订阅+其他命令) ②数据安全和性能保障(持久化选项+复制+处理系统故障+redis事务+非事务型流水线+关于性能方面的注意事项) ③使用redis构建支持程序(使用redis来记录日志+计数器和统计数据
  • 跨年季巨献!14W字!腾讯高工手写“Redis实战笔记”,高效储存让你的项目性能起飞!
    前言 大家知道redis是目前互联网世界最为流行的Not Only SQL数据库,redis在互联网行业的应用是非常非常广泛的,因为它有着非常恐怖的响应速度,速度可以说是远远超过数据库的,所以很多项目中都会应用上redis,可以极大的提高性能,减低项目中的储存压力。 所以说学好redis是多么的重要,现在去面试,redis的相关技术问题肯定是必问的,或者说参与项目时,你能够熟练的应用redis,会为你增添不少色彩。这份“redis实战笔记”,以绝对专业的理论+实战带你学习redis。 为了迎接即将来到的跨年,需要完整版的朋友扫描小编的二维码即可免费领取哦! 先给大家分享一个超实用的redis学习路线: 该笔记从基础、核心概念、进阶、实战四个维度带你学习redis Part1:redis基础知识(入门篇) ①初识redis(redis简介+redis数据结构简介+你好redis) ②使用redis构建web应用(登录和cookie缓存+使用redis实现购物车+网页缓存+数据行缓存+网页分析) Part2:核心概念(带你快速入门) ①redis命令(字符串+列表+集合+散列+有序集合+发布和订阅+其他命令) ②数据安全和性能保障(持久化选项+复制+处理系统故障+redis事务+非事务型流水线+关于性能方面的注意事项) ③使用redis构建支持程序(使用redis来记录日志
  • 2021新年最新分享:阿里Java岗5轮技术面经整理
    写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。 面经分享 今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢?同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴 一轮技术面(90分钟) hashmap和hashtable区别为什么会产生死锁jvm类加载java反射获取私有属性,改变值反射用途所用数据库项目难点,问题如何解决项目中遇到的问题项目中遇到的最难解决的地方 二轮技术面(120分钟) 讲项目数据库乐观锁使用如何分库分表MySQL极限HashMap源码设计一个线程安全的HashMap快排的实现,时间复杂度和空间复杂度会什么算法如何把项目变成SOA架构Spring源码,最深刻的模块,aop用途JVM内存模型垃圾回收机制项目中查看垃圾回收 三轮技术面(150分钟) ConcurrentHashMap底层原理?手写一个LRU(用LinkedHashMap)HashMap底层数据结构?JDK1.8中的HashMap为什么用红黑树不用普通的AVL树?为什么在8的时候链表变成树?为什么在6的时候从树退回链表?线程池7个参数,该怎么配置最好
  • 阿里Java岗6轮技术面经历:死锁+jvm+MySQL+Spring+设计模式+项目,险幸上岸
    写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。 面经分享 今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢?同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴可以【见下图添加上小助手】即可获取到了! 一轮技术面(90分钟) hashmap和hashtable区别为什么会产生死锁jvm类加载java反射获取私有属性,改变值反射用途所用数据库项目难点,问题如何解决项目中遇到的问题项目中遇到的最难解决的地方 二轮技术面(120分钟) 讲项目数据库乐观锁使用如何分库分表MySQL极限HashMap源码设计一个线程安全的HashMap快排的实现,时间复杂度和空间复杂度会什么算法如何把项目变成SOA架构Spring源码,最深刻的模块,aop用途JVM内存模型垃圾回收机制项目中查看垃圾回收 三轮技术面(150分钟) ConcurrentHashMap底层原理?手写一个LRU(用LinkedHashMap)HashMap底层数据结构?JDK1.8中的HashMap为什么用红黑树不用普通的AVL树?为什么在8的时候链表变成树?为什么在6的时候从树退回链表
  • Java项目能力精选文章集合500篇【欢迎一键收藏!】
    谢天谢地你来了,我们已经准备好了基础IT技术文章300篇大合集,欢迎一键收藏,并与我们分享你的学习心得。 Java工程师项目能力文章500篇大合集包含: 【NoSQL】Redis 34篇、 MongoDB 33篇、Elasticsearch 42篇、HBase 41篇; 【消息列队】RabbitMQ 39篇、RocketMQ 39篇、Kafka 49篇; 【大数据】Hadoop 48篇、 Spark 49篇、 Storm 49篇、Flink 68篇; 第一部分:【NoSQL】Redis 33篇、 MongoDB 33篇、Elasticsearch 42篇、HBase 41篇; 1超强、超详细Redis入门教程https://blog.csdn.net/liqingtx/article/details/603305552面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)https://blog.csdn.net/Design407/article/details/1032428743redis如何后台启动https://blog.csdn.net/ksdb0468473/article/details/521260094SpringBoot集成redishttps://blog.csdn.net/weixin_40623736/article/details
  • 吹爆!阿里新产Spring Boot高级笔记,肝完变秃也变强
    前言 Java各种开发框架发展了很多年,影响了一代又一代的程序员。但环顾当前Java开源世界中的流行技术框架,能同时满足快速开发和分布式系统架构,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。 Spring Boot在经历了快速演变之后,在成为Java微服务开发的主流成熟框架。基于Spring Boot上手简单、功能丰富、易于扩展。可谓是目前业界快速开发、快速生产的利器! 正如前面所说的Spring Boot的影响力大家有目共睹,学会Spring Boot技术无疑是一个硬核涨薪技能。所以互联网雷锋(小编我)也是费尽心思为大家收罗到两份很nice的学习笔记供大家参考。 本文档是基于Spring Boot 2.X版本,采用“知识点+实例”的形式编写,通过“58个基于知识的实例+2个综合性的项目”,全面深入地讲解了Spring Boot的主要技术原理和应用。 其中,我们把晦涩难懂的理论通过图文结合的方式讲解,把不便理解的名词用通俗化的文字进行讲解,将每个抽象的知识点用具化的实例进行展现。可以使大家在阅读时既能读懂理论和概念,也能立即学会如何使用。 这本Spring Boot实战派主要分为四部分,接下来小编就从入门篇,基础篇,进阶篇和项目篇这四个方面来和各位大哥们讲解,由于文章篇幅过长,小编就简单的展现出来了~ 入门篇(第1章~第3章) 进入Spring
  • python数据分析网课-Python视频教程网课编程零基础入门数据分析网络爬虫全套Python视频教程...
    Python视频教程网课编程零基础入门数据分析网络爬虫全套Python视频教程 2020年07月08日 11:00作者:黄页编辑:黄页 分享 本课程为python教程大合集,包含python所有就业方向,每套课程均来自市面上主流培训机构的原版教程,价值都在数百元以上 每套课程均包含:视频课程+课件+源代码 重要:建议根据自己工作方向和需求,重点选择2到3套课程学精,吃透,然后在工作 重要:零基础小白建议先选择零基础全能篇的一套课程学精,然后再根据自 己的需求和规划选择学习其他方向课程,学完后一定要多实践 总目录 零基础全能篇(4套课程) 实用编程技巧进价(1套课程) 数据分析与挖掘(8套课程) 办公自动化(3套课程) 机器学习与人工智能(7套课程) 开发实战篇(4套课程) 量化投资(2套课程) 网络爬虫(6套课程) 数据库操作(1套课程) python高级编程(6套课程) 注:零基础全能篇中,针对windows和liunx系统均有两套课程可供选择学习,单纯学python,哪个系统都一样,初学者只需选择自己熟悉的系统学习相应课程即可。基于liunx系统的python教程,课程里也有liunx操作的详细教学,不用担心学习时不会操作liunx系统。 因篇幅有限,以下展示的只是课程里部分内容如对python课程有更多疑问 请咨询客服 1零基础入门全能班 01 –python简介 02
  • Python从入门到精通 学习教程
    一、Python学习路线图—流程篇: Python 学习路线图 Python 各阶段获得技能说明 二、Python学习路线图—视频篇: 1、第一阶段-Python基础知识 视频篇–第一阶段、Python基础 本阶段Python基础课程课程共计9个知识点,2个免费视频涵盖 1、学习目标: 能够熟练使用Python技术完成针对小问题的程序编写以及小游戏程序的开发。 2、知识点: 1)计算机组成原理 计算机组成部分、操作系统分类、B/S和C/S架构、理解软件与硬件的区别 2)Python变量以及开发环境 字符串、数字、字典、列表、元祖等 3)流程控制语句 程序的执行顺序,顺序执行、循环执行、选择执行 4)函数 定义函数、调用函数、函数的嵌套、递归函数 5)文件的基本操作 文件的打开、编辑、关闭 6)面向对象编程 类对象、实例对象、定义类、实例化对象 7)异常处理 学会捕捉异常、自定义异常 8)模块和包 理解模块和包的概念并学会使用 9)飞机大战游戏制作 自己独立完成飞机大战游戏 3、该阶段免费配套视频 1)《大道你们挤我去吃螃蟹之Python就业前景分析》该免费视频为就业前景剖析,源码笔记索要添加QQ865581497 2)《Python入门教程完整版(懂中文就能会)》 提取码:hkpd 该免费视频对应基础阶段全部知识点,源码笔记索要添加QQ865581497 2、第二阶段
  • 大手笔!阿里新产Spring Boot高级笔记,肝完变秃也变强
    前言 Java各种开发框架发展了很多年,影响了一代又一代的程序员。但环顾当前Java开源世界中的流行技术框架,能同时满足快速开发和分布式系统架构,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。 Spring Boot在经历了快速演变之后,在成为Java微服务开发的主流成熟框架。基于Spring Boot上手简单、功能丰富、易于扩展。可谓是目前业界快速开发、快速生产的利器! 正如前面所说的Spring Boot的影响力大家有目共睹,学会Spring Boot技术无疑是一个硬核涨薪技能。所以互联网雷锋(小编我)也是费尽心思为大家收罗到两份很nice的学习笔记供大家参考。 第一份文档 Spring Boot实战派 本文档是基于Spring Boot 2.X版本,采用“知识点+实例”的形式编写,通过“58个基于知识的实例+2个综合性的项目”,全面深入地讲解了Spring Boot的主要技术原理和应用。 其中,我们把晦涩难懂的理论通过图文结合的方式讲解,把不便理解的名词用通俗化的文字进行讲解,将每个抽象的知识点用具化的实例进行展现。可以使大家在阅读时既能读懂理论和概念,也能立即学会如何使用。 这本Spring Boot实战派主要分为四部分,接下来小编就从入门篇,基础篇,进阶篇和项目篇这四个方面来和各位大哥们讲解,由于文章篇幅过长,小编就简单的展现出来了~
  • 吹爆!阿里新产Spring Boot高级笔记,肝完变秃也变强
    前言 Java各种开发框架发展了很多年,影响了一代又一代的程序员。但环顾当前Java开源世界中的流行技术框架,能同时满足快速开发和分布式系统架构,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。 Spring Boot在经历了快速演变之后,在成为Java微服务开发的主流成熟框架。基于Spring Boot上手简单、功能丰富、易于扩展。可谓是目前业界快速开发、快速生产的利器! 正如前面所说的Spring Boot的影响力大家有目共睹,学会Spring Boot技术无疑是一个硬核涨薪技能。所以互联网雷锋(小编我)也是费尽心思为大家收罗到两份很nice的学习笔记供大家参考,需要的小伙伴帮忙评论+转发,关注我后私信【666】即可获取。 第一份文档 Spring Boot实战派 本文档是基于Spring Boot 2.X版本,采用“知识点+实例”的形式编写,通过“58个基于知识的实例+2个综合性的项目”,全面深入地讲解了Spring Boot的主要技术原理和应用。 其中,我们把晦涩难懂的理论通过图文结合的方式讲解,把不便理解的名词用通俗化的文字进行讲解,将每个抽象的知识点用具化的实例进行展现。可以使大家在阅读时既能读懂理论和概念,也能立即学会如何使用。 这本Spring Boot实战派主要分为四部分,接下来小编就从入门篇,基础篇
  • java后端快速入门-Servlet+JSP+Jquery+Ajax:总结梳理篇
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、博文整理:java后端开发 1、Servlet 2、JSP 3、Jquery 4、Ajax 三、其他 1、环境搭建和工具安装 2、特殊功能点 3、与nodejs混搭:Redis、nvm、nginx 一、前言 这段时间写了很多有关 Servlet+JSP+Jquery+Ajax 的博文,这个是我当初实习的时候笔记,当时其实跟讲师复习只花了15天时间。 那么为什么花时间整理呢?一个是java经久不衰,另一个是像android、web、ios开发等都是离不开后端的。知道一些后端知识,更方便于你在公司的项目沟通。也就是这些博文适合那些想快速入门javaEE后端开发或者是你做了多年android、ios、web开发等经常碰到被java后端“怼”的朋友。 接下来谈谈怎么学习这些博文?我的建议是:理论知识看一篇有印象就行,不需要记忆,然后把案例看懂写一篇。我把笔记整理分享出来本身的一个好处就是在做项目的时候:方便更好的复习查阅演示。另外javaEE后端更多的知识点我会在后面陆续更新,如:一些后端框架,你的支持是我的动力,感谢大家的支持! 二、博文整理:java后端开发 1、Servlet 理论篇 原创 java服务器端开发-servlet:1、认识Servlet,如:web开发背景
  • Python视频教程网课编程零基础入门数据分析网络爬虫全套自学课程
    本课程为python教程大合集,包含python所有就业方向,每套课程均来自市面上主流培训机构的原版教程,价值都在数百元以上每套课程均包含:视频课程+课件+源代码重要:建议根据自己工作方向和需求,重点选择2到3套课程学精,吃透,然后在工作重要:零基础小白建议先选择零基础全能篇的一套课程学精,然后再根据自 己的需求和规划选择学习其他方向课程,学完后一定要多实践 总目录 零基础全能篇(4套课程) 实用编程技巧进价(1套课程) 数据分析与挖掘(8套课程) 办公自动化(3套课程) 机器学习与人工智能(7套课程) 开发实战篇(4套课程) 量化投资(2套课程) 网络爬虫(6套课程) 数据库操作(1套课程) python高级编程(6套课程) 注:零基础全能篇中,针对windows和liunx系统均有两套课程可供选择学习,单纯学python,哪个系统都一样,初学者只需选择自己熟悉的系统学习相应课程即可。基于liunx系统的python教程,课程里也有liunx操作的详细教学,不用担心学习时不会操作liunx系统。 因篇幅有限,以下展示的只是课程里部分内容如对python课程有更多疑问 请咨询客服 1零基础入门全能班 01 –python简介 02 第一个程序 03-python执行方式和pycharm设置 04-程序的注释和算术运算符 05 程序执行原理 06变量的使用以及类型
  • 字节Java岗二面“跪败”Redis后,面试官推荐我看这份“Redis实战手册”
    前言 大家知道redis是目前互联网世界最为流行的Not Only SQL数据库,redis在互联网行业的应用是非常非常广泛的,因为它有着非常恐怖的响应速度,速度可以说是远远超过数据库的,所以很多项目中都会应用上redis,可以极大的提高性能,减低项目中的储存压力。 所以学好redis是多么的重要,你现在去面试,redis的相关技术问题是必问的,或者说参与项目时,熟练的应用redis,会为你增添不少色彩。这份“redis实战笔记”,以绝对专业的理论+实战带你学习redis。 为了迎接即将来到的跨年,需要完整版的朋友扫描小编的二维码即可免费获取! 给大家分享一个超实用的redis学习路线: 基础、核心概念、进阶、实战四个维度带你学习redis Part1:redis基础知识(入门篇) ①初识redis(redis简介+redis数据结构简介+你好redis) ②使用redis构建web应用(登录和cookie缓存+使用redis实现购物车+网页缓存+数据行缓存+网页分析) Part2:核心概念(带你快速入门) ①redis命令(字符串+列表+集合+散列+有序集合+发布和订阅+其他命令) ②数据安全和性能保障(持久化选项+复制+处理系统故障+redis事务+非事务型流水线+关于性能方面的注意事项) ③使用redis构建支持程序(使用redis来记录日志+计数器和统计数据
  • 屌炸了!阿里巴巴P7+大牛编写的Spring Boot+Spring Cloud微服务开发实战笔记,受益匪浅!
    就一个字“屌” 分享一份由阿里p8大牛编写的【Spring Boot+Spring Cloud微服务开发实战笔记】此份适合的读者:微服务开发入门人员,入门编程的学员,中级编程的学员,在校学生,微服务框架研究人员 在当前技术迭代很快的情况下,本书从基础入门开始,然后一步步加深,希望可以把每个知识点描述清楚,希望读者可以快速上手,并加深对每个组件的理解。在本书的编写期间,我查找了很多资料,看过很多源码,使自己对技术的理解更加深刻。 本书特色 1.讲授符合初学者的认知规律,由浅入深 2.以实例引导全程,特别适合初学者学习 3.独有的框架截图,方便重现代码示例 干货来了 全书共分为四篇:Web基础知识篇,Spring Boot篇,Spring Cloud工具篇,微服务开发实战篇;由于篇幅限制小编仅展示部分目录哦,想要获取完整资料的小伙伴看文末即可获取! 第一篇:Web基础知识(1~3章) 第1章认识微服务:在本章中,我们将讨论什么是微服务,为什么要使用微服务,以及在使用微服务的过程中将面对的挑战。在理解微服务之后,如果读者对之前的互联网框架发展过程不是很了解,就会觉得有点“晕”。所以,在本章中,会再介绍一下互联网服务框架的演变过程,通过这个过程,读者将会对微服务框架有一个更深的理解。 第2章快速搭建一个微服务框架:在本章中,我们将搭建两个框架,其一是Spring Boot框架
  • Java后端 学习路线 笔记汇总表【黑马程序员】
    目录 前言 黑马程序员 官网 —— Java 学习路线图 01_Java语言基础及面向对象和封装 1-1-Java基础语法 1-2-面向对象和封装 02_Java语言高级 01-常用API_1 02-继承与多态 03-常用API第二部分 04-集合 05-异常与多线程 06-File类与IO流 07-网络编程 08-JDK8新特性 09-基础加强 10-MySQL 11-JDBC 03_ JavaWeb 01-HTML和CSS 02-JavaScript 03-BootStrap 04-XML 05-Tomcat 06-Servlet和HTTP请求协议 07-Request和Response 08-Cookie和Session 09-JSP、EL和JSTL 10-综合案例(用户信息) 11-Filter和Listener 12-Jquery 13-Ajax和JSON 14-Redis 15-Maven基础 04_黑马旅游网 05_Mybatis 06_Spring 07 SpringMVC 08_Oracle 09_Maven高级 10_ SSM整合案例【企业权限管理系统】 11_微服务电商【黑马乐优商城】 前言 Java后端 学习路线 笔记汇总表【黑马程序员】 加油~ 感谢 纪录片《圣贤教育改变命运》,感谢 黑马程序员 ~ 黑马程序员 官网 —— Java 学习路线图 黑马程序员