初识redis(String,Hash,List,Set,SortedSet)
认识NoSql
sql关系型数据库 nosql非关系型数据库
nosql具有非结构化,Key/Value,Document,Draph
无关联的,非sql,BASE(原子性,持久性,一致性,隔离性)
认识redis
特征:
键值(key-value)型,value支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性
低延迟,速度快(基于内存、I0多路复用、良好的编码)
支持数据持久化
支持主从集群、分片集群
支持多语言客户端
Redis数据结构介绍
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样
String类型
KEYS:查看符合模板的所有key,不建议在生产环境设备上使用
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
TTL:查看一个KEY的剩余有效期
通过help[command]可以查看一个命令的具体用法
Key的结构
String类型三种格式:
1.字符串
2.int
3.float
Redis的key的格式:
【项目名】:【业务名】:【类型】:【id】
Hash类型
Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便
List类型
Redistribution中的List类型与Java中的Linked List类似,可以看作是一个双向链表结构,既可以支持正向检索和也可以支持反向检索。
特征也与Linked List类似:
1.有序
2.元素可以重复
3.插入和删除块
4.查询速度一般
Set类型
Redis的set结构与Java中的Hash Set类型,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与Hash Set类似的特性:
1.无序
2.元素不可重复
3.查找块
4.支持交集,并集,差集等功能
SortedSet类型
Redis的Sortedset是一个可排序的set集合,与lava中的Treeset有些类似,但底层数据结构却差别很大。Sortedset中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。Sortedset具备下列特性:
可排序
元素不重复
查询速度快
因为Sortedset的可排序特性,经常被用来实现排行榜这样的功能。