Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持.
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets)和 有序集合(sorted sets)等类型。
Redis支持诸如列表、集合或有序集合的交集、并集、差集等高级原子操作.
持久化
通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。[3]通过两种方式可以实现数据持久化:使用快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。
[编辑]主从同步
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
[编辑]性能
相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间没有显著的性能差异,如果Redis将数据只存储于内存中。
Redis的优点
- 性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子(事务性) – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。(你可以将数据推到某个信息管道中,然后其它人可以通过订阅这些管道来获取推送过来的信息)
- 持久化: 1. 数据快照的原理是将整个Redis中存的所有数据遍历一遍存到一个扩展名为rdb的数据文件中。通过SAVE(BGSAVE)命令可以调用这个过程。2.Redis还支持一种追加式的操作日志记录,叫append only file,其日志文件以aof结局,我们一般各为aof文件。
redis命令在线练习
redis命令操作类可以参考:Redis系统性介绍
http://blog.nosqlfan.com/html/3139.html?ref=rediszt
MEMCACHE与REDIS的对比:
1. 没有必要过多的关心性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。(比如瓶颈可能会在网卡)
2. 如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
3. 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的
4. 当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
1、查看keys
redis 127.0.0.1:6379> keys * 1) "serverMinutes.1.1336284900" 2) "serverMinutes.1.1340192100" 3) "serverDay.1.20120620" 4) "server.1.lastState" 5) "serverMinutes.1.1340192400"
2、列表操作
Jedis jedis = getJedis(); jedis.rpush(cacheKey,"list_data1"); jedis.rpush(cacheKey,"list_data2"); jedis.rpush(cacheKey,"list_data3"); jedis.expire(cacheKey, expireSeconds); //get data List<String> list =jedis.lrange(cacheKey, 0, -1); //start, end
命令模式查看:
redis 127.0.0.1:6379> lrange serverMinutes.1.1340192100 0 -1 1) "1.266667" 2) "0.9641184807561425" 3) "3.5300000000000002" 4) "0.33855871944968086" 5) "0.0"
3. MAP操作
Jedis jedis = getJedis(); jedis.hset(cacheKey, "lastRecv", "1340192603"); jedis.hincrBy(cacheKey, "packetNum", 1); Map<String, String> map = jedis.hgetAll(key); String fieldData = jedis.hget(cacheKey, field);
命令模式查看:
redis 127.0.0.1:6379> hgetall server.1.lastState 1) "lastRecv" 2) "1340192603" 3) "lastSend" 4) "1340192500" 5) "lastRRD" 6) "1340192400" 7) "lastDiskReadIoNum" 8) "3000"
相关推荐
Laravel Redis操作大全 Laravel Redis操作大全提供了Redis操作的详细介绍,涵盖了基本的set/get操作、setex存储带存储时效的记录、add操作、getset操作、incrby/incr/decrby/decr操作、exists检测操作、type类型...
总的来说,Windows下的Redis操作与Linux环境有一些区别,但基本原理和命令保持一致。理解Redis的基本概念和命令,以及如何在Windows上配置和管理Redis服务,对于在Windows环境中利用Redis优化应用性能至关重要。通过...
C# StackExchange.Redis 操作封装类库,分别封装了Redis五大数据结构(String,Hash,List,Set,ZSet)的增删改查的操作方法,支持Async异步操作。支持Redis分库操作。支持信息队列操作。 带有单元测试,为每个...
谈下你对 Redis 的了解? 1)Redis是一种基于键值对的NoSQL数据库(非关系...包括c#引用的包,操作类,包括操作List,Hash、SortedSet等全有了 更多请查阅 https://blog.csdn.net/weijia3624/article/details/130691865
描述Linux系统安装部署Redis操作详细步骤 描述Linux系统安装部署Redis操作详细步骤 描述Linux系统安装部署Redis操作详细步骤
**Redis Manager:高效便捷的Redis操作工具** Redis是一款开源、高性能、基于键值对的数据存储系统,常被用作数据库、缓存和消息中间件。在处理大量数据和需要高速读写操作的场景中,Redis因其优秀的性能表现而备受...
jmeter 实现 redis 操作 jmeter 实现 redis 操作是指使用 jmeter 工具来测试和操作 Redis 服务器的过程。 Redis 是一个开源的内存数据库,可以用来存储和管理数据。jmeter 是一个功能强大的测试工具,支持对 Redis ...
在使用ServiceStack.Redis操作工具类时,你需要了解以下关键知识点: 1. **连接管理**:ServiceStack.Redis提供了一个`IRedisClient`接口,它是所有Redis操作的基础。你可以通过`RedisManagerPool`或`RedisClient`...
《Redis操作基础文档》介绍了Redis的基础命令和操作。每一种数据类型都给出了相应的命令示例和用法说明,以及对Redis的事务处理、持久化设置以及主从复制等高级功能的使用,帮助读者深入了解Redis的内部机制 目录 ...
`redis_helper` 可能是为 C++ 开发的一个库或框架,方便程序员更便捷地进行 Redis 操作。 本文将深入探讨如何使用 C++ 与 Redis 进行交互,以及 `redis_helper` 在此过程中的作用。 首先,为了在 C++ 中与 Redis ...
2. **创建`RedisTemplate`**:基于`JedisConnectionFactory`创建`RedisTemplate`,用于执行各种Redis操作。 3. **操作示例**:如`opsForValue()`、`opsForHash()`等方法分别对应键值对操作、哈希表操作等。 总结来...
本资源包含了Redis操作的源代码、辅助查看Redis状态的工具代码以及Redis的安装包,是学习和使用Redis的重要参考资料。 源代码部分可能涵盖以下几个关键知识点: 1. **命令接口**:Redis支持丰富的命令,如GET、SET...
ServiceStack.Common; ServiceStack.ServiceInterface; ServiceStack.Redis; ServiceStack.Text; StackExchange.Redis; redis demo
redis操作指南
redis-operator概述Redis 操作员在 Kubernetes 上使用 Sentinel构建高可用性 Redis 集群。使用此操作员,您可以创建一个无需人工干预即可抵御某些类型故障的 Redis 部署。操作符本身是用操作符框架构建的。它受到...
Redis 提供了多种操作命令,包括键(key)操作命令、字符串(String)操作命令、哈希表(Hash)操作命令、列表(List)操作命令、集合(Set)操作命令、有序集合(SortedSet)操作命令等。 键(key)操作命令 键(key)操作命令...
这个"C# redis操作类"应该封装了这些API,使得开发者可以更简洁、直观地进行Redis操作。以下是一些常见的Redis操作和对应C#方法: 1. 连接Redis:使用`ConnectionMultiplexer.Connect()`方法建立与Redis服务器的...
这个框架支持多种Redis操作,包括键、字符串、哈希、列表、集合、有序集合等数据结构的操作,还提供了事务、发布/订阅、脚本执行等功能。在`spring-data-redis-1.8.13.RELEASE.jar`中,包含了Spring对Redis的完整...
基于 Golang 的 redis 操作器,将在 Kubernetes 之上创建/监督 Redis 独立和集群模式设置。它可以使用最佳实践在云和裸机环境中创建 redis 集群设置。此外,它还使用 redis-exporter 提供内置监控功能。有关文档,请...
发现用StackExchange.Redis代替收费项目ServiceStack.Redis是个不错的选择,只有一个dll,并且代码开源,很不错。...代码只做简单演示用StackExchange.Redis操作Redis数据库。 测试写入100万个key用时43秒。