Redis学习笔记(二):Redis介绍
Redis,一种高性能的key-value数据库,并提供多种语言的API。它通常称为数据结构服务器,因为值可以是字符串,哈希,列表,集合和有序集合等类型。
redis特点:
- Redis支持数据的格式化,可以将内存中的数据保存在磁盘中,重启的时候可以加载进行使用。
- Redis不仅仅支持key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
- 性能极高
- 所有操作都是原子操作,要么全成功,要不不成功。支持事物。
Redis数据类型:
Redis支持五种数据类型:string,hash,list,set和zset(sorted set,有序集合)。
string型:string类型是二进制安全的,可以包含任何数据,比如jpg图片或序列化的对象。一个键最大能存储512M。一般做一些复杂的计数功能的缓存。
Hash:是一个string类型的field和value的映射表,hash特别适合用于存储对象。每个hash可以存储2^32-1个键值对(40亿)。这里的value存放的是结构化对象,比较方便的就是操作其中的某个字段。当做单点登录的时候,就是用这种数据结构存储用户信息。以cookieid作为key,设置30分钟为缓存过期时间,模拟session效果
1 2 3 4 5 6 | 127.0.0.1:6379> hmset myfamily yaohuiqin girlfriend weixihui boyfriend OK 127.0.0.1:6379> hget myfamily yaohuiqin "girlfriend" 127.0.0.1:6379> hget myfamily weixihui "boyfriend" |
List(列表):列表是简单的字符串列表,按照插入顺序排序。列表最多可以存储2^32-1个元素(40亿)。使用List的数据结构,可以做简单的消息队列的功能。利用lrange命令,做基于redis的分页功能,效果极佳。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 127.0.0.1:6379> lpush bigfamily yaohuiqin ( integer ) 1 127.0.0.1:6379> lpush bigfamily yaohuiqin ( integer ) 2 127.0.0.1:6379> lpush bigfamily weixihui ( integer ) 3 127.0.0.1:6379> lpush bigfamily mama ( integer ) 4 127.0.0.1:6379> lpush bigfamily baba ( integer ) 5 127.0.0.1:6379> lrange bigfamily 0 10 1) "baba" 2) "mama" 3) "weixihui" 4) "yaohuiqin" 5) "yaohuiqin" |
Set:是string类型的无序不重复集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。set堆放的是一堆不重复的集合,所以可以做局部去重功能。利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 127.0.0.1:6379> sadd setfamily yaohuiqin ( integer ) 1 127.0.0.1:6379> sadd setfamily weixihui ( integer ) 1 127.0.0.1:6379> sadd setfamily mama ( integer ) 1 127.0.0.1:6379> sadd setfamily baba ( integer ) 1 127.0.0.1:6379> sadd setfamily didi ( integer ) 1 127.0.0.1:6379> sadd setfamily yaohuiqin ( integer ) 0 127.0.0.1:6379> sadd setfamily weixihui ( integer ) 0 127.0.0.1:6379> smembers setfamily 1) "weixihui" 2) "yaohuiqin" 3) "mama" 4) "baba" 5) "didi" |
zset:有序集合,string元素的类型集合,不允许有重复。不同的元素都会关联一个double类型的分数。redis正式通过分数来对集合中的成员进行从小到大的排序。注意,zset的成员唯一,但是分数可以重复。多了一个权重参数score,集合中的元素能够按照score进行排序,可以做排行榜应用,取TOP N操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 127.0.0.1:6379> zadd zsetfamily 0 yaohuiqin ( integer ) 1 127.0.0.1:6379> zadd zsetfamily 2 weixihui ( integer ) 1 127.0.0.1:6379> zadd zsetfamily 3 baba ( integer ) 1 127.0.0.1:6379> zadd zsetfamily 0 mama ( integer ) 1 127.0.0.1:6379> zrangebyscore zsetfamily 0 100 1) "mama" 2) "yaohuiqin" 3) "weixihui" 4) "baba" |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步