Redis在.net中的应用学习

在Redis的官网(http://redis.io/clients#c)上可以看到支持Redis C#的客户端。

redis的网络连接方式和传统的rdbms相似,一种是长连接,一种是连接池,此处使用长连接进行连接。

目前redis官方版本不支持.net直接进行连接,需要使用一些开源类库。目前最流行的就是ServiceStack.redis,可以通过https://github.com/ServiceStack/ServiceStack.Redis下载最新版本。

下载完成解压,在\ServiceStack.Redis-master\build\release\MonoDevelop目录下看到ServiceStack.Redis.zip文件,这个就是需要引入到.net项目中的4个dll文件。

测试时发现四个文件版本比较旧,可以通过编译redis源码,生成最新的dll文件。

打开VS2013,创建一个控制台应用程序,写了一些简单的Redis操作

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 using ServiceStack.Redis;
 8 using ServiceStack.Redis.Support;
 9
10 namespace RedisDemo
11 {
12     class Program
13     {
14         private static RedisClient redis = new RedisClient("192.168.32.216", 6379, "anny");
15         static void Main(string[] args)
16         {
17             //单个字符串写入
18             redis.SetValue("age", "20");
19             //读取指定key的字符串
20             redis.GetValue("age");
21
22             //存储数字
23             redis.Set<int>("int_age", 30);
24             int age = redis.Get<int>("int_age");
25             Console.WriteLine("int_age={0}", age);
26
27             //将字符串列表写入Redis List
28             List<string> colourList = new List<string>{"red","pink","green","blue","black","white"};
29             colourList.ForEach(item => redis.AddItemToList("colourList", item));
30
31             //读取Redis List内容
32             List<string> colourList1 = redis.GetAllItemsFromList("colourList");
33             colourList1.ForEach(item => Console.Write(item + " "));
34
35             //存储实体对象,在Redis中以json格式存储
36             UserInfo user = new UserInfo(){Id=1, Name="Mark", Age=32, City="ShangHai" };
37             redis.Set<UserInfo>("user_1", user);
38             UserInfo user1 = redis.Get<UserInfo>("user_1");
39             Console.WriteLine("id={0},name={1},age={2},city={3}", user1.Id, user1.Name, user1.Age, user1.City);
40
41             //object序列化方式
42             var ser = new ObjectSerializer();
43             redis.Set<byte[]>("user1", ser.Serialize(user));
44             UserInfo user11 = ser.Deserialize(redis.Get<byte[]>("user1")) as UserInfo;
45             Console.WriteLine("id={0},name={1},age={2},city={3}", user1.Id, user1.Name, user1.Age, user1.City);
46
47             //存储对象列表到redis中
48             List<UserInfo> userList = new List<UserInfo>{
49                 new UserInfo{Id=2, Name="Jack", Age=27, City="beijing" },
50                 new UserInfo{Id=3, Name="Tom", Age=25, City="XiaMen" }
51             };
52
53             redis.Set<byte[]>("userlist", ser.Serialize(userList));
54             List<UserInfo> userList1 = ser.Deserialize(redis.Get<byte[]>("userlist")) as List<UserInfo>;
55             userList1.ForEach(i =>
56             {
57                 Console.WriteLine("id={0},name={1},age={2},city={3}", i.Id, i.Name, i.Age, i.City);
58             });
59
60
61             Console.Read();
62         }
63
64         [Serializable]
65         class UserInfo
66         {
67             public int Id { get; set; }
68             public string Name { get; set; }
69             public int Age { get; set; }
70
71             public string City { get; set; }
72         }
73     }
74 }

Redis linux环境下查看:

[email protected]:/usr/local/redis/bin# ./redis-cli -a anny
127.0.0.1:6379> keys *
1) "age"
2) "colourList"
3) "int_age"
4) "user1"
5) "userlist"
6) "user_1"
127.0.0.1:6379> type colourList
list
127.0.0.1:6379> lrange colourList 0 -1
1) "red"
2) "pink"
3) "green"
4) "blue"
5) "black"
6) "white"
127.0.0.1:6379> type userlist
string
127.0.0.1:6379> get userlist
"\x00\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\[email protected], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\x04\x01\x00\x00\x00\x81\x01System.Collections.Generic.List`1[[RedisDemo.Program+UserInfo, RedisDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]\x03\x00\x00\x00\x06_items\x05_size\b_version\x04\x00\x00\x1cRedisDemo.Program+UserInfo[]\x02\x00\x00\x00\b\b\t\x03\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\a\x03\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x1aRedisDemo.Program+UserInfo\x02\x00\x00\x00\t\x04\x00\x00\x00\t\x05\x00\x00\x00\r\x02\x05\x04\x00\x00\x00\x1aRedisDemo.Program+UserInfo\x04\x00\x00\x00\x13<Id>k__BackingField\x15<Name>k__BackingField\x14<Age>k__BackingField\x15<City>k__BackingField\x00\x01\x00\x01\b\b\x02\x00\x00\x00\x02\x00\x00\x00\x06\x06\x00\x00\x00\x04Jack\x1b\x00\x00\x00\x06\a\x00\x00\x00\abeijing\x01\x05\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x06\b\x00\x00\x00\x03Tom\x19\x00\x00\x00\x06\t\x00\x00\x00\x06XiaMen\x0b"

127.0.0.1:6379> type user_1
string
127.0.0.1:6379> get user_1
"{\"Id\":1,\"Name\":\"Mark\",\"Age\":32,\"City\":\"ShangHai\"}"

时间: 2024-11-06 03:53:41

Redis在.net中的应用学习的相关文章

REDIS源码中一些值得学习的技术细节02

1. Redis中散列函数的实现: Redis针对整数key和字符串key,采用了不同的散列函数 对于整数key,redis使用了 Thomas Wang的 32 bit Mix Function,实现了dict.c/dictIntHashFunction函数: 1 /* Thomas Wang's 32 bit Mix Function */ 2 unsigned int dictIntHashFunction(unsigned int key) 3 { 4 key += ~(key <<

Redis源码中探秘SHA-1算法原理及其编程实现

导读 SHA-1算法是第一代"安全散列算法"的缩写,其本质就是一个Hash算法.SHA系列标准主要用于数字签名,生成消息摘要,曾被认为是MD5算法的后继者.如今SHA家族已经出现了5个算法.Redis使用的是SHA-1,它能将一个最大2^64比特的消息,转换成一串160位的消息摘要,并能保证任何两组不同的消息产生的消息摘要是不同的.虽然SHA1于早年间也传出了破解之道,但作为SHA家族的第一代算法,对我们仍然很具有学习价值和指导意义. SHA-1算法的详细内容可以参考官方的RFC:ht

Redis简介、安装、配置学习笔记

前一篇文章有介绍关系型数据库和非关系型数据库的差异,现在就来学习一下用的较广的非关系型数据库:Redis数据库 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储

redis数据库在linux上的学习

redis数据库在linux上的学习 1.redis安装方式 yum安装(提前配置好yum源) yum install redis -y 源代码编译安装 rpm包手动安装 2.编译安装redis 1.下载redis源代码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis源码包 3.编译三部曲 指定安装路径 ,生成makefile 编译文件 ./configure --prefix=redis的安装路径 开

JS中模板嵌套学习(代码)

<script src="script/jquery-1.4.2.js"></script>    <script src="script/jsrender.js"></script>    <script id="header" type="text/x-jsrender">        <tr>               <th>序号&

JS中childNodes深入学习

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <div id="box"> <div></div> <div></div> <div></div> </div> <script

项目中走马观花式学习PHP

项目中走马观花式学习PHP 因项目缘故,需要快速补充php知识,个人有asp基础,较熟悉aspx.c#winform编写,故选择了快速阅读PHP相关资料.整理了一下,给大家参考.阅读的资料都是来自网络,我也不说不清作者是谁了,这里要对带我们这些菜鸟飞的前辈和大神们表示感谢.此外和我一样学过asp的朋友请百度一下php和asp语法的不同,对自己帮助很大. 第一部分相关知识补充 一.PHP准备工作 (一)PHP环境搭建(略) 建议使用apm,修改相关的参数即可搭建好环境.详情随便百度一下.... 第

图像识别中的深度学习 转

转:http://mp.weixin.qq.com/s?__biz=MzAwNDExMTQwNQ==&mid=209152042&idx=1&sn=fa0053e66cad3d2f7b107479014d4478#rd#opennewwindow 1.深度学习发展历史 深度学习是近十年来人工智能领域取得的重要突破.它在语音识别.自然语言处理.计算机视觉.图像与视频分析.多媒体等诸多领域的应用取得了巨大成功.现有的深度学习模型属于神经网络.神经网络的起源可追溯到20世纪40年代,曾经

redis 在 php 中的应用(string篇)

本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 上一篇:redis 在 php 中的应用(key篇) 目录: string(字符串) 1.SET Redis SET 命令用于设置给定 key 的值.如果 key 已经存储其他值, SET 就覆写旧值,且无视类型. 语法: redis 127.0.0.1:6379> SET KEY_NAME VALUE 返回值: 设置成功时返回 OK .当sec