一 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解析器”工作原理 – 陌年古城 – 博客园
    
   
 
