redis中文网:https://www.redis.net.cn/tutorial/3503.html

本文深入介绍了Redis,一个高性能的键值对数据库。它以其纯内存操作、非阻塞I/O多路复用机制和丰富的数据类型等优点被广泛应用于热点数据加速查询、任务队列、即时信息查询等多个场景。同时,文章提到了Redis的不足,如并发竞争问题和缓存一致性挑战,并列举了一些常见的Redis命令,如SET、GET、HMSET等。此外,还探讨了Redis配置选项,如数据库同步策略和安全性设置。最后,提到了JavaScript解析器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值