redis数据格式
A. 列表数据 redis用什么类型
1.strings(字符串)
a)如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了;
b)在遇到数值操作时,会自动转换过为字符串,如写入数字1,读出来将是字符串1;
c)本身具有原子性的指令:incr、decr和Memecached中increment、decrement类似;
d)应用场景:常规计数-微博数,粉丝数;
2.lists(列表)
a)lists数据类型的实现不是数组而是通过链表这种数据结构实现;
b)使用Lists结构,我们可以轻松地实现最新消息排行等功能。Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行;
c)每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列;
3.sets(无序集合)
a)所谓集合就是一堆不重复值的组合,并且是没有顺序的;
b)在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
4.sorted sets(有序集合)
a)和Sets相比,Sorted Sets增加了一个权重参数score,使得集合中的元素能够按score进行有序排列;
b)比如一个存储全班同学成绩的Sorted Sets,其集合value可以是同学的学号,而score就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。可以用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。
c)应用场景:在线游戏的排行榜,根据得分你通常想要:
i.列出前100名高分选手
ii.列出某用户当前的全球排名
5.hashes(哈希)
a)在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值,比如用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。而Redis的Hash结构可以使你像在数据库中Update一个属性一样只修改某一项属性值。
b)应用场景:存储部分变更数据,如用户信息,session共享;
B. redis包含哪些数据类型
redis数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
C. redis可以存储哪些数据类型
5种,
字符串
散列
集合
有序集合
列表
基本就这些
D. redis 查看有哪些数据类型
Redis目前支持5种数据类型,分别是:
String(字符串)
List(列表)
Hash(字典)
Set(集合)
Sorted Set(有序集合)
E. Redis支持几种数据类型
字符串(String)
哈希(Hash)
列表(List)
集合(Set)
有序集合(sorted set)
F. redis支持的数据类型有哪些
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
string 是 redis 最基本的类型,可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象,string 类型的值最大能存储 512MB。
(6)redis数据格式扩展阅读:
Redis hash是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis list是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Redis的Set是string类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
G. redis支持哪些数据类型
redis提供五种数据类型:string,hash,list,set及zset(sorted set)。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
H. redis各种数据类型分别在什么情况下使用
1.取最新N个数据的操作
•使用LPUSH latest.comments<ID>命令,向list集合中插入数据
•插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
•然后我们在客户端获取某一页评论时可以用下面的伪代码 redis.lrange("latest.comments",start,start+num_items-1)
ps:如果输入无序则可以使用sorted set用时间作为score,然后lrangebyscore分页读取,按时间排序
2.排行榜应用,取TOP n操作
将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
3.需要精准设定过期时间的应用
比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了
4.计数器应用
INCR,DECR命令
5.Uniq操作,获取某段时间所有数据排重值
使用Redis的set数据结构
6.实时系统,反垃圾系统
set
7.Pub/Sub构建实时消息系统
8.构建队列系统
使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。
9.缓存
其实没有固定说那个类型一定用在什么场景,你需要了解redis数据类型的特点,并利用其特点来满足你的场景需要。
redis有字符串类型、列表、哈希表(散列表)、集合、有序集合这5种,各有不同。各有特点,列表经常用作队列用作需要保持顺序的场景,散列表可以去除重复值而且可以设置field属性,集合可以去除重复而且支持集合操作适合tag系统以及关注人列表,有序集合在集合基础上增加了排序。
I. Redis有哪些数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。