一 redis介绍
1 redis定义
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。
2 redis的优点与缺点
优点:
1.纯内存操作
2.单线程操作,避免了CPU频繁的上下文切换
3.采用了非阻塞I/O多路复用机制
4.原子性、支持事务
5.丰富的数据类型
缺点:
1.缓存、数据库的双写一致性问题
2.缓存雪崩问题
3.缓存穿透问题
4.缓存的并发竞争问题(假死)
3 redis常见的应用场景
1、为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
2、任务队列,如秒杀、抢购、购票排队等
3、即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
4、时效性信息控制,如验证码控制、投票控制等
5、分布式数据共享,如分布式集群架构中的 session 分离
6、消息队列
7、分布式锁
二 常见的命令
(一)Redis数据库命令格式
1、String(字符串)
(1)设置键值对 set myKey abc
(2)取出键值对 get myKey
2、Hash(哈希)
(1)设置值:HMSET user:1 username redis.net.cn password redis.net.cn points 200
(2)获取值:HGETALL user:1
3、List(列表)
(1)设置值:lpush redis.net.cn redis
(2)获取值:lrange redis.net.cn 0 10
4、Set(集合)
(1)设置值 :sadd redis.net.cn redis
(2)获取值:smembers redis.net.cn
5、zset(sorted set:有序集合)
(1)设置值 :zadd redis.net.cn 0 redis
(2)获取值:ZRANGEBYSCORE redis.net.cn 0 1000
(二)Redis CONFIG 命令格式
1、redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
(三)其他redis命令
1、PING:该命令用于检测 redis 服务是否启动。
2、$ redis-cli -h host -p port -a password :redis客户端连接redis服务命令
三 常见的错误
(一)已解决redis连接时保错(error) ERR operation not permitted
在windows的cmd命令窗口使用redis-cli.exe连接redis时保错:(error) ERR operation not permitted
已解决redis连接时保错(error) ERR operation not permitted_码上敲享录
四 附1:简述JAVA同步、异步、阻塞和非阻塞之间的区别
参考文献:
(1)脚本之家 简述JAVA同步、异步、阻塞和非阻塞之间的区别
https://www.jb51.net/article/192321.htm
五 附2:redis击穿、穿透、雪崩
参考文献:
(1)csdn Redis缓存击穿、雪崩、穿透!(超详细)
Redis缓存击穿、雪崩、穿透!(超详细)_lin777lin的博客-CSDN博客_redis缓存击穿
(2)博客园
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案 – 大码哥 – 博客园
六 附3:redis.config案例(k_j_ythglpt)
bind 127.0.0.1
—— 绑定的主机地址
requirepass yth@Callsc_cache
—— 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH
<password>
命令提供密码,默认关闭
daemonize no
—— Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
pidfile /var/run/redis.pid
——
当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
port 6379
——
指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
timeout 0
——
当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
tcp-keepalive 0
loglevel notice
—— 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
logfile stdout
—— 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
databases 16
—— 设置数据库的数量,默认数据库为0,可以使用SELECT
<dbid>
命令在连接上指定数据库id
################
SNAPSHOTTING (快照; 快照方式; 快照技术;)
##################
save 900 1
—— 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
save 300 10
—— 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
save 60 10000
—— 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
stop-writes-on-bgsave-error yes
rdbcompression yes
—— 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbchecksum yes
dbfilename dump.rdb
—— 指定本地数据库文件名,默认值为dump.rdb
dir ./
—— 指定本地数据库存放目录
################
REPLICATION(复制; 拷贝;)
#################################
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
################
SECURITY(保护措施; 安全工作)
###################
################
LIMITS(限度; 限制; 极限; 限量; 限额;)
#####################
################APPEND ONLY MODE ###############################
appendonly no
—— 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendfsync everysec
—— 指定更新日志条件,共有3个可选值:
no
:表示等操作系统进行数据缓存同步到磁盘(快)
always
:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec
:表示每秒同步一次(折衷,默认值)
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
################
LUA SCRIPTING(LUA为电影(或戏剧等)写剧本)
##############
lua-time-limit 5000
################
SLOW LOG (日志显示)
###################################
slowlog-log-slower-than 10000
slowlog-max-len 128
################
ADVANCED CONFIG( 高级的、后期的配置)
##################
hash-max-ziplist-entries 512
—— 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-ziplist-value 64
—— 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
—— 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
################
INCLUDES (包括; 包含;)
###################################
七 附3:
浏览器中“JavaScript解析器”工作原理
参考:
(1)博客园
浏览器中“JavaScript解析器”工作原理
浏览器中“JavaScript解析器”工作原理 – 陌年古城 – 博客园