小记——Redis初步使用

首先,以前我对Redis一直是有所耳闻,不过一直没有自己去真正使用过。这次 由于自己的业务功能涉及到需要使用NoSQL的,所以针对Redis写一个小Demo练习一下。

虽然是领导指定使用的Redis,不过不得不说Redis还是有其优势的。

一、Redis简介

Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。Redis纯粹为应用而产生,它是一个高性能的key-value数据库,并且提供了多种语言的API

性能测试结果表示SET操作每秒钟可达110000次,GET操作每秒81000次(当然不同的服务器配置性能不同)。

Redis目前提供五种数据类型:string(字符串),list(链表), Hash(哈希),set(集合)及zset(sorted set)  (有序集合)

Redis开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。

二、Redis与Memcached的比较.

1.Memcached是多线程,而Redis使用单线程.

2.Memcached使用预分配的内存池的方式,Redis使用现场申请内存的方式来存储数据,并且可以配置虚拟内存。

3.Redis可以实现持久化,主从复制,实现故障恢复。

4.Memcached只是简单的key与value,但是Redis支持数据类型比较多。

Redis的存储分为内存存储、磁盘存储 .从这一点,也说明了Redis与Memcached是有区别的。Redis 与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis有两种存储方式,默认是snapshot方式,实现方法是定时将内存的快照(snapshot)持久化到硬盘,这种方法缺点是持久化之后如果出现crash则会丢失一段数据。因此在完美主义者的推动下作者增加了aof方式。aof即append only mode,在写入内存数据的同时将操作命令保存到日志文件,在一个并发更改上万的系统中,命令日志是一个非常庞大的数据,管理维护成本非常高,恢复重建时间会非常长,这样导致失去aof高可用性本意。另外更重要的是Redis是一个内存数据结构模型,所有的优势都是建立在对内存复杂数据结构高效的原子操作上,这样就看出aof是一个非常不协调的部分。

其实aof目的主要是数据可靠性及高可用性

三、Redis安装

在安装过程中发生了一件让人啼笑皆非的事。我是从官网上下载的,官网只提供linux版本 而我使用的是windows系统... 看上去跟我之前从别人那看到的不一样 没有exe文件...

看了网上教程才知道 现在只要GitHub提供下载 https://github.com/MSOpenTech/redis/tags 我下载的是64位版本的 可以选择一个磁盘目录 解压进去就行

文件说明:

redis-server.exe:服务程序

redis-check-dump.exe:本地数据库检查

redis-check-aof.exe:更新日志检查

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询.

redis-cli.exe: 服务端开启后,我们的客户端就可以输入各种命令测试了

1、打开一个cmd窗口,使用cd命令切换到指定目录(F:\Redis)运行 redis-server.exe redis.conf

2、重新打开一个cmd窗口,使用cd命令切换到指定目录(F:\Redis)运行 redis-cli.exe -h 127.0.0.1 -p 6379,其中 127.0.0.1是本地ip,6379是redis服务端的默认端口 (这样可以开启一个客户端程序进行特殊指令的测试)

接下来在使用Redis时,还需要下载C#驱动(也就是C#开发库),如下图:

当然,我们可以直接在项目管理NuGet程序包中下载ServiceStack.Redis

四、给Redis设置密码

在讲Redis数据类型之前,我们先给Redis设置上密码,不能让其在外网环境下面裸奔啊,我们可以为其设置一个复杂的访问密码,最好20位以上,这样可以有效防止别人暴力破解。

找到redis的配置文件,默认在安装指定目录下conf文件夹中,我的是在:E:\Redis\conf\redis.conf,查找requirepass选项配置

把这个选项前面的#注释干掉,然后在后面添加一个复杂的密码

# use a very strong password otherwise it will be very easy to break.
#
 requirepass @Test_20190505_chuanlei

# Command renaming.

五、Redis常用数据类型

使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。

Redis最为常用的数据类型主要有以下五种:

  • String
  • Hash
  • List
  • Set
  • Sorted set
static string host = "127.0.0.1";/*访问host地址*/
        static string password = "@Test_20190505_chuanlei";
        static readonly RedisClient client = new RedisClient(host, 6379, password);
public string TestRedis()
{
  client.Set<int>("pwd", 1111);
            int pwd = client.Get<int>("pwd");
            //client.BgSave();
            UserInfo userInfo = new UserInfo() { UserName = "zhangsan", UserPwd = "1111" };//</span>(底层使用json序列化 )
            client.Set<UserInfo>("userInfo", userInfo);
            UserInfo user = client.Get<UserInfo>("userInfo");

            List<UserInfo> list = new List<UserInfo>() { new UserInfo() { UserName = "lisi", UserPwd = "111" }, new UserInfo() { UserName = "wangwu", UserPwd = "123" } };
            for (int i = 0; i < 50; i++)
            {
                UserInfo ui = new UserInfo();
                ui.UserName = "uname" + i;
                ui.UserPwd = "upwd" + i;
                list.Add(ui);
            }
            client.Set<List<UserInfo>>("list", list);
            List<UserInfo> userInfoList = client.Get<List<UserInfo>>("list");
            List<UserInfo> ulist = new List<UserInfo>();
            foreach (var item in userInfoList)
            {
                UserInfo ui = new UserInfo();
                ui.UserName = item.UserName;
                ui.UserPwd = item.UserPwd;
                ui.NowDateTime = DateTime.Now.ToString();
                ui.UptUser = "admin";
                ulist.Add(ui);
            }
            client.Set<List<UserInfo>>("ulist", ulist);
            List<UserInfo> uList = client.Get<List<UserInfo>>("ulist");
}

以上是普通的读写,也是我初步的运用

欢迎提问!

原文地址:https://www.cnblogs.com/leiquyang/p/Redis_Test.html

时间: 2024-11-11 12:16:24

小记——Redis初步使用的相关文章

redis初步入门

http://blog.csdn.net/u014419512/article/details/25693425 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 环境 安装 启动 调试 java调用 后台进程 更多资料 环境 RHLinux-6.4-64-EN, 红帽6.4 64位,英文正式发布版 安装 安装很简单,先下载redis的压缩包,下载地址见这里,然后拷贝到你的linux机器,接着执行下面的命令. 1 2 3 $ tar xzf redis-2.6.14.tar

Redis初步

Redis目录下文件: redis-server.exe:服务程序 redis-check-dump.exe:本地数据库检查 redis-check-aof.exe:更新日志检查 redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具). 通过cmd启动Redis服务,可以配置conf Windows下要启动Redis需要编译好的 c:\目录>redis-server.exe redis.conf 启动后

Ehcache Memcache Redis 初步(二)

Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0  license).充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中. 什么特色? 1.  够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency

Redis初步了解

一.Redis 1.介绍 REmote DIctionary Server:数据结构服务器,k/v,数据结构: Redis 是一个开源(BSD许可)的,内存存储.数据结构存储系统,它可以用作数据库.缓存和消息中间件(消息队列). 它支持的数据结构:字符串.列表(数组).hashes(关联数组).集合.有序集合.bitmaps.hyperloglogs.空间索引: 内建的复制功能.Lua scripting(著名的脚本编程语言,容易内嵌入其他语言).LRU.事务.持久存储.高可用(Sentinel

redis 初步使用

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.2</version> </dependency> import org.springframework.beans.factory.annotation.Value; import org.springframework.conte

NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一下神马是主从复制架构? 1.1 源于关系数据库的读写分离 随着网站业务的不断发展,用户量的不断增加,数据量也成倍的增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成

对redis数据库的初步认识

由于之前接触的都是关系型数据库,对于非关系型数据库总是不了解,趁着外出做项目的机会,正好初步认识了redis数据库 redis分为存储分为几个存储的数据类型 string类型,hash类型,list链表类型,set集合类型,sorted set类型 对应的操作也是不一样的,所以最常用的工作就是: keys * 查询所有的键值 type 查询键值的类型 string建立的时候 即存储的是key-value的值对 hash 建立的是表名-key-value的值对,hash 特别适合用于存储对象.相较

【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一下神马是主从复制架构? 1.1 源于关系数据库的读写分离 随着网站业务的不断发展,用户量的不断增加,数据量也成倍的增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成

「Nosql」Redis小记-内存解析&amp;内存消耗篇

*博客搬家:初版发布于 2017/08/12 18:32    原博客地址:https://my.oschina.net/sunqinwen/blog/1507171 Redis内存消耗分析 注:本文默认读者已初步学会使用redis了. 首先我们通过info命令查看相关指标,其中几个memory的重要指标整理出来如下: 属性 解释 used_memory redis内部存储的所有数据的内存总占用量(自身内存+对象内存+缓冲内存) used_memory_ress redis进程占用的总物理内存