Redis简单学习笔记

本文介绍了Redis的基础知识,包括Redis的特点、NoSQL概念、Redis数据类型如string、hash、list、set、zset的使用及命令,以及Redis的持久化、事务、发布订阅功能、多数据库和数据淘汰策略。此外,还探讨了Redis缓存与数据库一致性问题及应对策略,如实时同步、异步队列和使用工具canal。最后总结了缓存穿透、雪崩和热点key的问题及其解决方案。
摘要由CSDN通过智能技术生成

1.Redis简介

Redis是完全开元免费的是一个高性能的NOSQL的key-value数据库

Redis是一个开元的使用ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库

2.NoSQL

泛指非关系型数据库:数据与数据之间没有关联关系。可以用命名来解决
比较适用于:

(1)数据模型简单

(2)需要灵活性更强的IT系统

(3)对数据库性能要求较高

(4)不要要高度的数据一致性

(5)对于给定key,比较容易映射复杂值的环境

与其他Key-value:

1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。

3.Redis支持数据的备份、集群等高可用功能

Redis的特点

1.性能极高

-Redis能读的速度是110000次/s,写的速度是81000次/s 2.丰富的数据类型

2.丰富的数据类型

-Redis支持类型String,List,Hash,Set以及OrderSet数据类型操作

3.原子

-Redis的所有操作都是原子性的,意思就是要买成功执行,要买失败完全不执行。单个操作是原子性的,多个操作也支持事务

4.丰富的特性

-Redis还支持public/subscribe通知key国旗等等特性

3. 其余的数据库类型

1.键值存储数据库

这一类数据主要会使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。key/value模型对于it系统来说优势在于简单,易部署。但是如果DBA只对部分只进行查询或者更新的时候,key/value就显得效率低下

2.文档型数据库

该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看做是键值型数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。

3.图形数据库

同其他行列以及港星结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上面。NoSQL数据库没有标准的查询语言,因此进行数据-库查询需要定制数据模型。

Redis总结

Redis单个key存入512m大小
Redis支持多种类型的数据结构
Redis是单线程 原子性
Redis可以持久化 因为使用了RDB和AOF机制
Redis支持集群 而且redis支持库(0-15)16个库
Redis还可以做消息队列 比如聊天室 IM
企业级开发中可以用作数据库、缓存和消息中间件等大部分功能
优点:
1.丰富的数据结构
2.高速读写,Redis使用自己实现的分离器,代码量很短,没有使用lock
缺点:
1.持久化。Redis直接将数据存储到内存中,呀将数据保存到磁盘上
2.耗内存,占用内存过高。

Redis配置

1.Redis默认不是以守护进程的方式运行, 可以通过该配置项修改,使用yes启用守护进程

daemonize no //改为yes

Redis采用是单进程多线程的模式,当redis.conf中选项daemonize设置成yes时代表开启守护进程模式,在该模式下,Redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时Redis将一直运行,除非手动kill该进程。但当daemonize选项设置成no时,当前界面进入Redis的命令行界面,exit强制退出或者关闭连接工具

2.当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis pid文件,可以通过pidfile指定

pidfile /var/run/redis.pid

3.Redis作为优秀的中间缓存件,时常会存储大量的数据,即使采取了集群部署来动态扩容,也应该即时的整理内存,维持系统性能(如果一直新增,内存很快就会沾满)

在Redis中有两种解决方案:

一是为数据设置超时时间

设定内存空间,建议内存不要超过256-512M

二是采用LRU算法动态将不用的数据删除。

内存管理的一种页面置换对于在内存中但又不用的数据块叫做LRU,操作系统会根据那些数据属于LRU而将其移除内存而腾出空间来加载另外的数据。
1.volatile-lru:设超时时间的数据中,删除最不常使用的数据
2.allkeys-lru:查询所有的key中最近不常使用的数据进行删除,这是应用最广泛的策略
3.volatile-random:在已经设定了超时的数据中心随即删除
4.allkeys-random:查询所有的key之后随即删除
5.volatile-ttl:查询全部设定超时时间的数据之后排序,将马上要过期的数据进行删除操作
6.Noeviction:如果设置为该属性则不会进行删除操作,如果内存溢出则报错返回

远程服务上执行命令 :

redis-cli -h ip地址 -p 端口 -a 密码

Redis关闭

1.断电,非正常关闭 容易数据丢失

查询PID ps -ef | grep -i redis
kill -9 PID

2.正常关闭,数据保存

./bin/redis-cli shutdown

redis常用命令

Expire key seconds
1.限时的优惠活动信息
2.网站数据缓存
3.手机验证码
4.限制网站访客访问频率

Redis命名规范

1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且还会降低查找效率;
2.key也不要太短,太短的话,key的可读性会降低
3.在一个项目中,key最好使用同一的命名模式,例如user:123:password;

Redis数据类型

1.string

string是Redis最基本的数据类型,一个key对应一个value
string类型是二进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值