您的位置:首页 > 数据库 > Redis

持久化存储——Redis简介

2017-02-27 14:38 363 查看


简介

Redis是一个高性能的key-value数据库,与其他的很多key-value数据库不同的是,redis不仅支持简单的键值对类型的存储,还支持其他一系列丰富的数据存储结构,包括:string、hashs、lists、sets、sorted
sets,并在这些数据结构类型上定义了一套强大的API。通过定义不同的存储结构,Redis可以很轻松的完成很多其他key-value数据库难以完成的任务,如排序、去重等。

Redis API

Redis支持丰富的数据类型,比如Redis的strings类型实际上就是最基本的key-value形式的数据,一个key对应一个value。
redis.set("name","zhangsan");//设置key-value
redis.setex("name",5,"zhangsan");//设置key-value有效期为5s
redis.mset("name","zhangsan","age","25");//一次设置多个key-value
redis.append("name","zhangsan");//给字符串追加内容
String name=redis.get("name");//根据key获取value
List<String> list=redis.mget("name","age");//一次获取多个key


Redis的hashs实际上是一个string类型的field和value的映射表,类似于map,特别适合存储对象。相较于将每个对象序列化后存储,一个对象使用hashs存储将会占用更少的存储空间,并且能够较为方便的存取整个对象。
redis.hset("url","google","www.google.com");
1
2
3
1
2
3

Redis的lists是一个链表结构,主要的功能是对元素的push和pop,以及获取某个范围内的值。push和pop操作可以从链表的头部或者尾部插入/删除元素。这使得lists既可以作为栈使用,也可以作为队列使用,其中,操作的key可以理解为链表的名称:
redis.lpush("list","a");//往首部插入元素
redis.rpush("list","a");//往尾部插入元素
redis.lpop("list");//往首部删除元素
redis.rpop("list");//往尾部删除元素

int size=redis.llen("list");//获得list的大小
1
2
3
4
5
6
1
2
3
4
5
6

Redis的sets与数据结构的set相似,用来存储一个没有重复元素的集合,对集合的元素可以进行添加和删除的操作,并且能够对所有元素进行枚举。
redis.sadd("setStr","a");
redis.sadd("setStr","b");//给set添加元素
redis.sadd("setStr","c");
redis.sadd("setStr","d");

redis.srem("setStr","c");//从set中移除元素

Set<String> set=redis.smembers("setStr");//枚举set的元素
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8

Redis的sorted sets是Redis sets的一个升级版本,他在sets的基础之上增加了一个排序的属性,该属性可以在添加元素时执行,sorted sets将根据该属性进行排序,每次新增元素后,sorted sets会重新对顺序进行调整。sorted sets不仅能够通过range正序对set取值,还能够通过range对set进行逆序取值,极大地提高了set操作的灵活性:
redis.zadd("SortSetNum","1","a");//插入sort set,并指定元素的序号
redis.zadd("SortSetNum","2","b");
redis.zadd("SortSetNum","3","c");
redis.zadd("SortSetNum","4","d");

//根据范围取set
Set<String> sortset=redis.zrange("SortSetNum",2,4);

//根据范围方向取set
Set<String> sortset=redis.zrevrange("SortSetNum",2,4);
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12

相较于传统的关系型数据库,Redis有更好的读写吞吐能力,能够支撑更高的并发数。而相较于其他的key-value类型的数据库,redis能够提供更为丰富的数据类型的支持,能够更灵活地满足业务需要。Redis能够高效地实现如排序去topN、访问计数器、队列系统、数据排重等业务需要,并且通过对服务器设置为cache-only,还能够提供高性能的缓存服务。相较于memcache来说,在性能差别不大的情况下,他能够支持更为丰富的数据类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: