`

redis操作

 
阅读更多

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命令在线练习

http://try.redis.io/

http://redis.cn/

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操作大全 Laravel Redis操作大全提供了Redis操作的详细介绍,涵盖了基本的set/get操作、setex存储带存储时效的记录、add操作、getset操作、incrby/incr/decrby/decr操作、exists检测操作、type类型...

    windows下redis操作

    总的来说,Windows下的Redis操作与Linux环境有一些区别,但基本原理和命令保持一致。理解Redis的基本概念和命令,以及如何在Windows上配置和管理Redis服务,对于在Windows环境中利用Redis优化应用性能至关重要。通过...

    C# StackExchange.Redis 操作封装类库

    C# StackExchange.Redis 操作封装类库,分别封装了Redis五大数据结构(String,Hash,List,Set,ZSet)的增删改查的操作方法,支持Async异步操作。​支持Redis分库操作。支持信息队列操作。 带有单元测试,为每个...

    C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#

    谈下你对 Redis 的了解? 1)Redis是一种基于键值对的NoSQL数据库(非关系...包括c#引用的包,操作类,包括操作List,Hash、SortedSet等全有了 更多请查阅 https://blog.csdn.net/weijia3624/article/details/130691865

    Linux系统安装部署Redis操作步骤(20200408).txt

    描述Linux系统安装部署Redis操作详细步骤 描述Linux系统安装部署Redis操作详细步骤 描述Linux系统安装部署Redis操作详细步骤

    redismanager redis操作工具

    **Redis Manager:高效便捷的Redis操作工具** Redis是一款开源、高性能、基于键值对的数据存储系统,常被用作数据库、缓存和消息中间件。在处理大量数据和需要高速读写操作的场景中,Redis因其优秀的性能表现而备受...

    jmeter 实现redis操作.docx

    jmeter 实现 redis 操作 jmeter 实现 redis 操作是指使用 jmeter 工具来测试和操作 Redis 服务器的过程。 Redis 是一个开源的内存数据库,可以用来存储和管理数据。jmeter 是一个功能强大的测试工具,支持对 Redis ...

    ServiceStack.Redis操作工具类

    在使用ServiceStack.Redis操作工具类时,你需要了解以下关键知识点: 1. **连接管理**:ServiceStack.Redis提供了一个`IRedisClient`接口,它是所有Redis操作的基础。你可以通过`RedisManagerPool`或`RedisClient`...

    Redis操作基础文档中文PDF完整版最新版本

    《Redis操作基础文档》介绍了Redis的基础命令和操作。每一种数据类型都给出了相应的命令示例和用法说明,以及对Redis的事务处理、持久化设置以及主从复制等高级功能的使用,帮助读者深入了解Redis的内部机制 目录 ...

    redis_helper c++ redis操作文件

    `redis_helper` 可能是为 C++ 开发的一个库或框架,方便程序员更便捷地进行 Redis 操作。 本文将深入探讨如何使用 C++ 与 Redis 进行交互,以及 `redis_helper` 在此过程中的作用。 首先,为了在 C++ 中与 Redis ...

    redis集群以及Spring-data-redis操作集群

    2. **创建`RedisTemplate`**:基于`JedisConnectionFactory`创建`RedisTemplate`,用于执行各种Redis操作。 3. **操作示例**:如`opsForValue()`、`opsForHash()`等方法分别对应键值对操作、哈希表操作等。 总结来...

    redis操作源代码以及查看redis的情况的辅助代码以及redis安装包

    本资源包含了Redis操作的源代码、辅助查看Redis状态的工具代码以及Redis的安装包,是学习和使用Redis的重要参考资料。 源代码部分可能涵盖以下几个关键知识点: 1. **命令接口**:Redis支持丰富的命令,如GET、SET...

    Redis demo c# 对Redis操作

    ServiceStack.Common; ServiceStack.ServiceInterface; ServiceStack.Redis; ServiceStack.Text; StackExchange.Redis; redis demo

    redis操作指南

    redis操作指南

    Redis 操作员在 Kubernetes 上使用 Sentinel 构建高可用性 Redis 集群.zip

    redis-operator概述Redis 操作员在 Kubernetes 上使用 Sentinel构建高可用性 Redis 集群。使用此操作员,您可以创建一个无需人工干预即可抵御某些类型故障的 Redis 部署。操作符本身是用操作符框架构建的。它受到...

    redis操作说明及应用

    Redis 提供了多种操作命令,包括键(key)操作命令、字符串(String)操作命令、哈希表(Hash)操作命令、列表(List)操作命令、集合(Set)操作命令、有序集合(SortedSet)操作命令等。 键(key)操作命令 键(key)操作命令...

    C#redis操作类.rar

    这个"C# redis操作类"应该封装了这些API,使得开发者可以更简洁、直观地进行Redis操作。以下是一些常见的Redis操作和对应C#方法: 1. 连接Redis:使用`ConnectionMultiplexer.Connect()`方法建立与Redis服务器的...

    java使用的redis操作架包

    这个框架支持多种Redis操作,包括键、字符串、哈希、列表、集合、有序集合等数据结构的操作,还提供了事务、发布/订阅、脚本执行等功能。在`spring-data-redis-1.8.13.RELEASE.jar`中,包含了Spring对Redis的完整...

    基于 golang 的 redis 操作员将在 Kubernetes 之上创建,监督 Redis 独立,集群,复制,哨兵模式的设置 .zip

    基于 Golang 的 redis 操作器,将在 Kubernetes 之上创建/监督 Redis 独立和集群模式设置。它可以使用最佳实践在云和裸机环境中创建 redis 集群设置。此外,它还使用 redis-exporter 提供内置监控功能。有关文档,请...

    StackExchange.Redis 操作 Redis Demo示例

    发现用StackExchange.Redis代替收费项目ServiceStack.Redis是个不错的选择,只有一个dll,并且代码开源,很不错。...代码只做简单演示用StackExchange.Redis操作Redis数据库。 测试写入100万个key用时43秒。

Global site tag (gtag.js) - Google Analytics