Redis演示及使用场景

概述

Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value(字典, Remote Dictionary Server,远程字典服务器)数据库。

客户端:http://redis.io/clients

命令:http://redis.io/commands     http://redisdoc.com

.NET开发程序配置

  • ServiceStack.Common.dll
  • ServiceStack.Interfaces.dll
  • ServiceStack.Redis.dll
  • ServiceStack.Text.dll

程序配置Redis服务IP和端口

static RedisClient Redis = new RedisClient("192.168.100.118", 6379); 

双击运行:redis-server.exe

Redis Desktop Manager 介绍

Redis Desktop Manager(RedisDesktopManager,RDM)是一个快速、简单、支持跨平台的 Redis 桌面管理工具,基于 Qt 5开发(一个跨平台的C++图形用户界面应用程序框架),支持通过 SSH Tunnel 连接。

下载地址:http://redisdesktop.com/download

配置Redis服务地址:

查看可视化keys的值:

C#操作5种基本数据类型

1. 字符串

A:  存储普通字符串,并设置过期时间
int expireTime = 5000;// 5S

存储:client.Add<string>("StringKey","StringValue", DateTime.Now.AddMilliseconds(expireTime));

获取:client.Get<string>("StringKey"), DateTime.Now);

B:  存储类对象
Student stud = new Student() { id = "1000", name = "张三" };
存储:client.Add<Student>("StringEntity", stud);
获取:Student Get_stud = client.Get<Student>("StringEntity");

测试用例输出结果:

2. 哈希

存储: client.SetEntryInHash("HashID", "Name", "张三");

A: 遍历HashID值为HashID的keys

获取:List<string> HaskKey = client.GetHashKeys("HashID");

B:遍历HashID值为HashID的values

获取:List<string> HaskValue = client.GetHashValues("HashID");

C:遍历所有keys

获取:List<string> AllKey = client.GetAllKeys();

测试用例输出结果:

3. 链表

A: 队列
入队:client.EnqueueItemOnList("QueueListId",
"1");
出队:long q =
client.GetListCount("QueueListId");
         
client.DequeueItemFromList("QueueListId"));

B: 栈
入栈:client.PushItemToList("StackListId",
"1");

出栈:client.PopItemFromList("StackListId")

测试用例输出:

4. 无序集合

存储: client.AddItemToSet("SetA", "1");

获取:HashSet<string> setA = client.GetAllItemsFromSet("SetA");

A:并集

HashSet<string> hashUnion = client.GetUnionFromSets(new string[] { "SetA", "SetB" });

B:交集

HashSet<string> intersectSet = client.GetIntersectFromSets(new string[] { "SetA", "SetB" });

C:差集

HashSet<string> setOfDiffSetAToSetB = client.GetDifferencesFromSet("SetA", new string[] { "SetB" });

测试用例输出:

5. 有序集合

存储:client.AddItemToSortedSet("SetSorted", "A");

输出:List<string> listSetSorted = client.GetAllItemsFromSortedSet("SetSorted");

测试用例输出:

Redis应用场景

只是介绍我本人在使用Redis时用到的场景,仅个人观点。

A.抢XXX赠券、抽奖系统的奖品库存,使用的Redis中的链表

前一天晚上通过定时服务推送奖品库存,使用LPUSH命令将乱序的奖品推入List中,抽奖时则调用LPOP命令,将最左侧奖品弹出队列,提示用户中奖。同时,发送异步消息,让消息去处理中奖纪录并插入关系型数据库中。

好处:
出队操作速度极快,可以满足多人并发抽奖的场景。
使用了消息队列,避免了数据库并发操作。

B.某活动累计充值xxx元,奖励xxx。使用Redis中的string/hash(哈希)结构

用户每次充值,都发送一个充值MQ事件(使用RabbitMQ),另一个程序,消费充值MQ事件,将事件中的用户ID、充值金额分别存到Redis(string/hash)里面。
以后,就可以直接汇总用户总充值金额给满足条件的客户赠送奖品。

好处:
完全避免了关系性数据库的查询插入操作
Redis的查询速度非常快,提升了用户体验

扩展阅读

1. redis持久化RDB和AOF  http://my.oschina.net/davehe/blog/174662

2. Redis作者谈Redis应用场景 http://blog.nosqlfan.com/html/2235.html

3. Redis使用总结之与Memcached异同 http://www.cnblogs.com/ceecy/p/3279407.html

4. Redis内存使用优化与存储 http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage

5. Redis学习手册(目录) http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html

演示代码下载:http://download.csdn.net/detail/jys1216/8991915

时间: 2024-10-10 03:15:17

Redis演示及使用场景的相关文章

深入分析Redis特点及应用场景

本文和大家分享的主要是redis 特点及应用场景相关内容,一起来看看吧,希望对大家 学习redis有所帮助. REmote DIctionary Server(Redis)  是一个由 Salvatore Sanfilippo 写的 key-value 存储系统. Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型. Key-Value 数据库,并提供多种语言的 API . 它通常被称为数据结构服务器,因为值(value )可以是 字

redis数据类型及使用场景

Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mget 等. 应用场景:String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能,并且效率更高.还可以享受Redis的定时持久化,操作日志及 Replication等功能.除了提供与 Memcached 一样的get.set.in

Redis各类型应用场景[转]

Redis各类型应用场景 Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用方法 方法 说明 特性 set 设置key对应的的值为String类型的value get 获取对应key对应的String的值,如果不存在返回nil setnx 设置可以为对应的值为

redis数据类型和应用场景

Redis是什么?两句话可以做下概括: 1. 是一个完全开源免费的key-value内存数据库 2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings.map. list.sets. sorted sets redis 五种数据类型:string,hash(哈希类型),list(链表结构),set(无序集合)及zset(sorted set  --有序集合). Redis 应用场景: 1.显示最新的项目列表 下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问

Redis工业生产应用场景

Redis应用场景 国内外三个不同领域巨头分享的Redis实战经验及使用场景 Redis的5个常见使用场景 Redis应用场景 Redis应用场景<张善友>

小蚂蚁学习Redis笔记(1)——Redis简介、适用场景、对比

Nosql    =    not only sql    反sql运动,非关系型数据库 Nosql是以key-value形式存储,和传统的关系型数据库形成对比. Nosql有以下几个特点:非关系型的,分布式,开源的,水平可拓展的. 优点: 1. 处理超大量的数据    2. 运行在便宜的PC服务器集群上    3. 击碎了性能瓶颈 Nosql的适用场景: 1. 对数据高并发读写    2. 对海量数据的高效率存储和访问    3. 对数据的高可扩展性和高可用性 ps:扩展性好主要体现在它没有一

Memcached和Redis对比和适用场景

关于memcached和redis的使用场景,根据大神们的讨论和我在网上查到的资料,总结一下: 两者对比: redis提供数据持久化功能,memcached无持久化: redis的数据结构比memcached要丰富,能完成场景以外的事情: memcached的单个key限制在250B,value限制在1MB:redis的K.V都为512MB;当然这些值可以在源码中修改: memcached数据回收基于LRU算法,Redis提供了多种回收策略(包含LRU),但是redis的回收策的过期逻辑不可依赖

Redis各类型应用场景

Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用方法 方法 说明 特性 set 设置key对应的的值为String类型的value get 获取对应key对应的String的值,如果不存在返回nil setnx 设置可以为对应的值为String类型的valu

[Chapter 0] Redis 介绍与应用场景

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨.NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入. NoSQL的特点: 处理差大量的数据 运行在廉价的PC服务器集群 解决性能瓶颈 NOSQL应用场景: 对数据高并发读写 对海量数据的高效率存储和访问 对数据的高可扩展性和高可用性 Redis is an open