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环境下查看:
root@ubuntu:/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\x00@RedisDemo, 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\"}"
转载于:https://www.cnblogs.com/zxtceq/p/7251011.html
Redis在.net中的应用学习相关推荐
- Redis数据库教程——系统详解学习Redis全过程
Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统: Key-Value Store是当下比较流行的话题,尤其 ...
- redis 内存不足 排查_Redis 系统学习之 redis 内存模型
关注:架构师学习路线,每日更新互联网最新技术文章与你不断前行,实战资料,笔试面试 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并 ...
- redis基础命令和数据操作命令学习笔记
redis基础命令和数据操作命令学习笔记 基础命令 安装成功后,redis的启动命令:先修改配置文件.将服务改成默认运行.然后以配置文件启动服务 redis-server config/redis-c ...
- 你了解Redis集群中的秘密吗?
前言 今天早上北京地铁,看见一个正在学习Redis的小姐姐,很优秀 在之前的Redis系列文章中,介绍了Redis的持久化.主从复制以及哨兵机制,主从复制+哨兵机制,既可以解决主master和从sl ...
- 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例
强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...
- 3ds Max中的V-Ray学习
时长3h 30m 大小解压后:2.73G 包含项目文件 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 3ds Max中的V-Ray简介:官方V-Ray导师 云桥网络 获 ...
- 在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别
2019独角兽企业重金招聘Python工程师标准>>> 在了解了TensorflowJS的一些基本模型的后,大家会问,这究竟有什么用呢?我们就用深度学习中被广泛使用的MINST数据集 ...
- redis在php中的使用介绍
redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...
- 在OpenCV中基于深度学习的边缘检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 分析了Canny的优劣,并给出 ...
- redis在PHP中的基本使用案例
服务端安装 Redis的官方下载站是http://redis.io/download,可以去上面下载最新的安装程序下来,我写此文章时的的稳定版本是2.6.11. 步骤一: 下载Redis 进入软件安装 ...
最新文章
- Camera Lens Coating
- 潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据...
- mac下 VisualBox 虚拟机转移到活动硬盘,出现 UUID 错误
- 点云网络的论文理解(七)-Frustum PointNets for 3D Object Detection from RGB-D Data
- 趣学python3(26)-pygame-蛇身运动
- c++ 返回数组中最大的值_4个代码块教您如何在C中动态分配2D数组
- gitee 从 拉取新分支到本地_Hexo博客详细教程(一)| 建立本地站点
- 【LeetCode笔记】1143. 最长公共子序列(Java、动态规划、字符串)
- 《论文笔记》Cooperative Multi-Robot Monocular-SLAM using Salient Landmarks
- linux内核部件分析(十)——设备驱动模型之class,linux内核部件分析(十)——设备驱动模型之class...
- 手写模拟器,将电子文档转换为手写字体,就用这个软件
- 二 详解VBA编程是什么
- 戴尔微型计算机云处理器,为创作与品质而生 戴尔全新XPS15 OLED云解析
- 可偏导不一定连续的例子
- 【IoT】创业:一份价值主张画布送给你
- 生成对抗网络训练_生成对抗网络
- freertos认识(freertos篇-1)
- Python文字转语音文字转拼音
- 三相电机智能栅极驱动芯片DRV83053与DRV8343S找不同
- python在程序中模拟键盘鼠标操作
热门文章
- 用access建立一个试题库_我想建立一个试题库,用Access可吗?还 – 手机爱问
- latex 表格 每列 分隔符
- C++ Make、Makefile、CMake和CMakeLists关系
- C++ 类 class 构造函数 : 成员赋值 父类提前构造
- feedback vertex set problem (FVS) 反馈顶点集问题 是什么
- 在已有的服务器上如何部署网站,如何在云服务器上部署网站
- java最新 学习路线
- spring 自定义注解及使用
- 五、Oracle学习笔记:DQL数据查询语句
- 【Leetcode_easy】724. Find Pivot Index