Redis数据类型详解及其在切实运行中的场景展示 (redis数据类型)
引见
Redis(RemoteDictionaryServer)是一个开源的内存数据结构存储系统,罕用作数据库、缓存和信息两边件。它支持多种数据结构,包含字符串、哈希表、列表、汇合、有序汇合等,并提供了丰盛的操作命令,可以对这些数据结构启动极速的读写操作。
Redis的特点包含:
Redis是一特性能弱小、性能优越的内存数据结构存储系统,实用于各种场景下的数据存储和处置需求。
Redis数据类型
这些数据类型在Redis中都有对应的命令可以启动操作,可以依据详细的需求选用适宜的数据类型来存储和处置数据。
Redis运行场景
Redis是一种高性能的内存数据库,罕用于缓存、会话治理、信息队列等场景。以下是Redis的一些经常出现运行场景:
Redis经常使用
设置键值对:SETkeyvalue
失掉键对应的值:GETkey
删除键值对:DELkey
上方是一个经常使用「SpringBoot和Redis」成功缓存性能的示例:
首先,须要在pom.xml文件中减少Redis和SpringBoot的相关依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies>
接上去,在application.properties文件中性能Redis的衔接信息:
#Redisspring.redis.host=127.0.0.1spring.redis.port=6379
而后,创立一个缓存性能类,用于性能Redis缓存的相关参数:
@Configuration@EnableCachingpublicclassRedisCacheConfigextendsCachingConfigurerSupport{@BeanpublicRedisTemplate<String,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){RedisTemplate<String,Object>redisTemplate=newRedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);redisTemplate.setKeySerializer(newStringRedisSerializer());redisTemplate.setValueSerializer(newGenericJackson2JsonRedisSerializer());returnredisTemplate;}@BeanpublicCacheManagercacheManager(RedisConnectionFactoryredisConnectionFactory){RedisCacheConfigurationcacheConfiguration=RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues();returnRedisCacheManager.builder(redisConnectionFactory).cacheDefaults(cacheConfiguration).build();}}
在须要缓存的方法上减少@Cacheable注解,指定缓存的称号缓和存的key:
@ServicepublicclassUserService{@AutowiredprivateUserRepositoryuserRepository;@Cacheable(value="users",key="#id")publicUsergetUserById(Longid){returnuserRepository.findById(id).orElse(null);}}
最后,启动SpringBoot运行程序,即可经常使用Redis成功缓存性能。
Redis有哪几种数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 (推荐学习:Redis视频教程)String(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。 string 类型是二进制安全的。 意思是 redis 的 string 可以包含任何数据。 比如jpg图片或者序列化的对象。 string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。 常用命令:set、get、decr、incr、mget等。 注意:一个键最大能存储512MB。 Hash(哈希)Redis hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。 每个 hash 可以存储 232 -1 键值对(40多亿)。 常用命令:hget、hset、hgetall等。 应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。 List(列表)Redis 列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。 常用命令:lpush、rpush、lpop、rpop、lrange等。 列表最多可存储 232 - 1 元素 (, 每个列表可存储40多亿)。 Set(集合)Redis的Set是string类型的无序集合。 和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。 集合最大的优势在于可以进行交集并集差集操作。 Set可包含的最大元素数量是。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 应用场景:1、利用交集求共同好友。 2、利用唯一性,可以统计访问网站的所有独立IP。 3、好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。 常用命令:sadd、spop、smembers、sunion等。 集合中最大的成员数为 232 - 1(, 每个集合可存储40多亿个成员)。 zset(sorted set:有序集合)Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。 redis正是通过分数来为集合中的成员进行从小到大的排序。 zset的成员是唯一的,但分数(score)却可以重复。 sorted set是插入有序的,即自动排序。 常用命令:zadd、zrange、zrem、zcard等。 当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构。 应用举例:(1)例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩。 (2)排行榜应用,根据得分列出topN的用户等。 更多redis相关技术知识,请访问Redis使用入门教程栏目学习!
redis的五种数据类型
redis的五种数据类型分别是string、hash 、list、set、zset 。
一、string
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。string类型是Redis最基本的数据类型,string类型的值最大能存储512MB。
二、hash
Redishash是一个键值(key=>value)对集合。Redishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。HMSET,HGET命令,HMSET设置了两个field=>value对,HGET获取对应field对应的value。
三、list
列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。列表最多可存储232—1元素(,每个列表可存储40多亿)。lpush设置值,lrange取值。
四、set
redis的set是string的无序集合。集合通过哈希表实现。添加一个string元素到key对应的set集合中,用sadd命令。返回1表示成功,0表示在集合中已存在,返回错误表示key对应的set不存在。查看用smembers命令。集合内元素的唯一性,第二次插入的元素将被忽略。集合中最大的成员数为232—1(,每个集合可存储40多亿个成员)。
五、zset
redis的zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
Redis数据模型和性能:
一、数据模型
1、字符串列表。
2、无序不重复的字符串集合。
3、有序不重复的字符串集合。
4、键、值都为字符串的哈希表。
二、性能
1、测试完成了50个并发执行个请求。
2、设置和获取的值是一个256字节字符串。
3、Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
4、文本执行使用loopback接口(127.0.0.1)。
5、结果:读的速度是次/s,写的速度是次/s 。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。