Redis学习笔记:Redis简介

一、NoSQL和关系型数据库区别

NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操作。

关系型数据库:Oracle、MySQL、DB2、SQL Server等,基于表结构存储,采用SQL操作。

二、Redis简介

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为: Remote Dictionary Server(远程数据服

务),该软件使用C语言编写,是典型的NoSQL数据库服务器。Redis是一个Key-Value存储系统,它支持丰富的数据类型,如String、Hash、List、Set、

Zset(Sorted Set)。

三、Redis特点

优点:

  • 性能极高:Redis能支持每秒10万读写频率。
  • 支持丰富的数据类型:包括String、Hash、List、Set、Zset(Sorted Set)等多种数据类型。
  • 原子性:所有操作都是原子性的(一起成功,或者一起失败)。
  • 支持持久化操作:将内存数据同步到数据文件中。
  • 提供了事务、消息传递等功能。

缺点:

  • 由于是内存数据库,所以单台机器存储的数据量,取决于机器本身的内存大小。虽然Redis本身有Key过期策略,但是还是需要提前预估及节约

内存,如果内存增长过快,需要定期删除数据。

  • 如果进行完整重同步,由于需要生成rdb文件并进行传输,因此会占用主机的CPU并会消耗网络的带宽。虽然Redis 2.8版本已经有部分重同步的

功能,但是还是有可能完整重同步的,比如新上线的备机。

  • 修改配置文件后,重启将硬盘中的数据加载到内存时,时间比较久。在这个过程中,Redis不能提供服务。

备注:

在系统中,通常使用Redis做数据缓存使用。

查询缓存:第一次查询时会从数据库中取出数据放入缓存,后续查询都将从缓存中读取数据。

添加/更新缓存:将用户数据通过检测后放入缓存,然后给用户响应,后台开启线程取数据处理。

    四、Redis常用数据类型

Redis常用的数据类型有5种,即String、Hash、List、Set、Zset(Sorted Set):

String--字符串

String是简单的Key-Value 类型,Value不仅可以是String,也可以是数字(当数字类型用Long可以表示的时候encoding就是整型,其它都存储在

sdshdr当做字符串),在List、Set和Zset中包含的独立的元素类型都是Redis String类型。String类型的Value最大为512MB。

    Hash--字典

Hash是最接近关系型数据库结构的数据类型,可以将数据库中一条记录或程序中一个对象转换成hashmap存放在Redis中。在Memcached中,我们

经常将一些结构化的信息打包成hashmap,然后在客户端序列化后存储为一个字符串的值 (一般是JSON格式),比如用户的昵称、年龄、性别等。

Hash的键值对个数最多为2^32-1(4294967295)个。

List--列表

List说白了就是链表类型(双端链表),主要功能是push、pop、获取一个范围的所有值等,其中的Key可以理解为链表的名字。在Redis中,List就

是Redis String的列表,按照插入顺序进行排序,比如使用LPUSH命令在List头插入一个元素、使用RPUSH命令在List尾插入一个元素。当这两个命令

之一作用于一个空的Key时,一个新的List就创建出来了。List的元素个数最多为2^32-1(4294967295)个。

Set--集合

Set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的Set数据结构,可以存储一些集合性的数据。在Redis中,Set就是Redis

String的无序集合,不允许有重复元素,对Set的操作有交集、并集、差集等。Set的元素个数最多为2^32-1(4294967295)个。

ZSet(Sorted Set)--有序集合

和Set相比,Sorted Set是将Set中的元素增加了一个权重参数score,使得集合中的元素能够按score进行有序排列,对于已经有序的Zset,仍然可以

使用SORT命令,通过指定ASC|DESC参数对其进行排序。Zset的元素个数最多为2^32-1(4294967295)个。

五、Redis操作命令

5.1、字符串操作

set key value       //设置value值get key             //获取value值strlen key          //获取value长度incr key            //将value加1incrby key i        //将value加idecr key            //将value减1decrby key i        //将value减iappend key value    //将原有key的值拼接上value值

5.2、哈希操作

hset key 字段名 字段值                 //设置一组hmset key 字段名 字段值 字段名 字段值    //设置多组hget key 字段名                       //获取一个字段值hmget key 字段名1 字段名2              //获取多个字段值hlen key                             //获取字段数量hkeys key                            //查看字段名hdel key 字段名                       //删除字段名

5.3、列表操作

lpush key value                           //从头部放入值(key列表存在插入,不存在创建列表插入)rpush key value                           //从尾部放入值lpop key                                  //从头部删除一个元素rpop key                                  //从尾部删除一个元素lrem key count value                      //删除多少个值等于value的元素lindex key index                          //获取index位置的value值lrange key start end                      //获取指定范围的元素linsert key before|after 元素 要插入的值    //插入元素lset key index value                      //更新index位置的value值llen key                                  //获取列表元素数

5.4、集合操作

sadd key value value     //向集合添加元素srem key value           //删除value元素scard key                //获取集合元素数量smembers key             //查看所有元素srandmember key count    //获取count个随机数sinter key1 key2         //两个集合交集,key1和key2都有sunion key1 key2         //两个集合并集,去重复合并sdiff key1 key2          //差集,key1有,key2没有

5.5、有序集合

zadd key score value       //向集合添加元素zrem key value             //删除元素zcard key                  //元素数量zrange key start end       //获取指定范围的元素(小到大)zrevrange key start end    //获取指定范围的元素(大到小)zrevrank key value         //获取value索引(大到小)zrank key value            //获取value索引(小到大)

    5.6、key操作

keys pattern         //查看keydel key              //删除keyexpire key time      //设置有效时间(秒)type key             //判断value值类型rename key newkey    //修改key名称

六、Redis文件格式

Redis使用了两种文件格式:全量数据和增量请求。

全量数据:是把内存中的数据写入磁盘,便于下次读取文件时进行加载。

增量请求:是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。

备注:Redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

七、Redis应用场景

(1)会话缓存(Session Cache)

(2)全页缓存(FPC)

(3)队列

(4)排行榜/计数器

(5)发布/订阅

参考自:

https://blog.csdn.net/weixin_39671217/article/details/78021732

(0)

相关推荐

  • Redis 数据结构

    一.Redis简介 Redis是一款基于key-value的高性能NoSQL数据库,开源免费,遵守BSD协议.支持string(字符串) . hash(哈希) .list(列表) . set(集合) ...

  • 学习下Redis这个核心数据类型

    string 字符串 tring 类型是二进制安全的,即 string 中可以包含任何数据. Redis 中的普通 string 采用 raw encoding 即原始编码方式,该编码方式会动态扩容, ...

  • SQL系统学习笔记之数据库概述与SQL简介

    数据库简介 数据库(Database,DB):通过计算机加工而成的可以进行高效访问的数据集合 数据库管理系统(Database Management System,DBMS):用来管理数据库的计算机系 ...

  • Redis学习二(数据操作).

    key 操作 删除 key:del key 批量删除key:redis-cli -a(密码)keys "QXJ_*"| xargs redis-cli -a(密码)del 查看所有 ...

  • 学习之Redis(一)

    一.redis简介 一般学习,最好先去官网,之所以建议看官网,是因为这是一手的学习资料,其他资料都最多只能算二手,一手资料意味着最权威,准确性最高.https://redis.io/topics/in ...

  • redis学习

    邻近年底,决定辞职,自认为即使没有找到很满意的工作,也应该不会差.事实是有点自信回头,虽然找到了工作,但途中也受到了打击,不得不承认学习的激情不知何时,渐渐熄灭.直到认识一个女生,她让我对未来充满着信 ...

  • redis 读书笔记_1

    Remote Dictionary Service 套接字socket:对网络中不同主机上的应用进程之间进行双向通信的端点的抽象 持久化: 1.作用:防止数据丢失 2.机制: RDB存储(快照--硬盘 ...

  • 一则公报案例学习笔记:对修改股东出资期限应否适用资本多数决规则的思考|审判研究

    一.问题的提出 2021年第3期<最高人民法院公报案例>刊登了鸿大(上海)投资管理有限公司与姚锦城公司决议纠纷上诉案,裁判要旨为:"公司股东滥用控股地位,以多数决方式通过修改出资 ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 周哥学习笔记(2021.5.8)

    心理界限存在的意义,正是为了帮助人们控制情绪进入的量,不至于太过冷漠或太过投入,让我们保持一个合适的距离与外界互动. 人没有办法只通过吸收变得更美好和丰富,它必须通过大胆的碰撞和创造.如果不能保持足够 ...