1.什么是redis?
REmote DIctionry Server(redis) 是一个由C语言编写的完全开源的,高性能的Key-Value存储系统。
2.redis的特点?
1.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的储存。
3.redis支持数据的备份,即master-slave模式的数据备份。
3.redis的优势?
1.性能极高--redis能读的速度是110000次/s,写的速度是81000次/s.
2.丰富的数据类型--redis支持二进制案例的Strings,Lists,Hashs,Sets,及Ordered Sets 数据类型操作。
3.原子---redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行(回滚事物)。
4redis五种数据结构
1字符串--String
string是redis最简单最基本的数据结构,Redis所有的数据结构都是以唯一的key作为名称,然后通过唯一的key值来获取对应的value数据。不同类型的数据结构的差异就在于value的结构不一样。
2.列表--List
redis的列表相当于java中的LinkedList,注意它是链表而不是数组。这意味着list的插入和删除操作会非常快,时间复杂度为O(1),但是索引定位很慢,时间复杂度为O(n).
3.哈希--Hash
Redis hash 是一个string类型的field和value的映射表,hash特别适合存储对象。
Hash结构存储用户信息,不同于字符串一次性需要全部序列化整个对象,hash可以对用户结构中的每个字段单独存储。
这样我们需要获取用户信息时,可以进行部分获取。如果以字符串形式保存用户信息的话,就只能一次性全部读取,这样就会比较浪费流量。
4.集合--set
redis的集合相当于java中的HashSet,它内部的键值对是无序的唯一的。它的内部相当于一个特殊的字典,字典中所有的value都是一个值null。
当集合中最后一个元素移除后,数据结构自动删除,内存回收。
set结构可以用来存储活动中奖的用户ID,因为有去重功能,可以保证同一个用户不会中奖两次。
5.有序集合--Sorted Set
它类似与java中的SortedSet和HashMap的结合体,一方面它是一个set,保证了内部value的唯一性,另一方面他可以给每个value赋予一个score,代表value的排序权重。
zset可以用来存粉丝列表,value值是粉丝的用户ID,score是关注时间。我们可以对粉丝列表按照关注时间进行排序。
zset也可以用来存储学生成绩,value是学生ID,score是学生考试成绩。我们可以对成绩按分数进行排序就可以得到他的名字。
5.redis 通用操作
过期时间: redis所有的数据结构都可以设置过期时间,时间到了redis会自动删除相应的对象。
需要注意的是,过期是以对象为单位,比如一个hash结构的过期,而不是其中的某个子Key。