1. Redis是什么

与memcached 和 couchbase类似,redis是非常快速的基于内存的键值数据库,使用标准c编写,是使用最广泛的缓存中间件。利用Redis提供的五种基本数据类型(String, List, Set, Zset, Hash)可以做一些很灵活很强大的应用程序组件。

2. 安装

CentOS

通过redis的官方网站 http://redis.io/download 可以下载到最新的redis源代码

先安装gcc, 再make编译,然后make install 安装,然后通过redis-server启动redis实例

yum -y install gcc
wget http://10.58.8.232:10000/redis-3.0.7.tar.gz
tar -xzvf redis-3.0..tar.gz
make MALLOC=libc
make install
redis-server redis.conf

启动之后会是这个界面

配置一下 redis.conf,将daemonize 设置为yes

然后再次启动

redis-server redis.conf

此时redis可后台运行

通过redis-cli可以运行测试

SET hello world

GET hello

Windows

Redis官方不支持windows版本,有个开源项目是干这个的  https://github.com/MSOpenTech/redis

安装文件下载地址 https://github.com/MSOpenTech/redis/releases/download/win-2.8.2400/Redis-x64-2.8.2400.msi

双击安装

默认安装路径是 C:\Program Files\Redis

cd到这个目录

设置 redis.windows.conf 的maxheap(建议设置为100M以上)

然后执行 redis-server.exe redis.windows.conf

3. 基本概念和命令

单线程

redis使用了单线程,一个实例只使用一个cpu,这样避免了不必要的上下文切换和竞争资源。因为redis不是计算密集型的(数据密集型),所以对cpu要求不高。如果单核性能不够用,可以多开几个进程。

db

db 就相当于MySQL数据库,不同的应用程序数据存储在不同的数据库下,不同的应用程序数据存储在不同的数据库下。同一个db内不允许出现重复的key,因为Redis中的DB是相互独立存在的,所以在不同的db中可以出现重复的key。

默认有db0 ~ db15 16个db, 数量可以在redis.conf中更改

databases 16

可以通过下面的命令来切换到不同的数据库下

随后,所有的命令将使用数据库3,知道你明确的切换到另一个数据库下

每个数据库都有属于自己的空间,不必担心之间的key冲突。

flushdb 命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。

用 keys * 可以查找当前db(默认是0)下的所有key

常用命令

SET name "centanet"    – 设置name的值为centanet

GET name     --获取name的值

SET connections 10     – 设置connections的值为10
INCR connections        – 将connections 的值递增, 此时connections 为 11
DEL connections    – 删除connections
INCR connections   – 将connections递增,此时connections 为 1
SET meal "rice"          – 设置meal的值为rice
EXPIRE meal 120    --设置meal的过期时间为120s
TTL meal                      – 查看meal的生命 Time-To-Live

INFO 命令可以查看redis服务器当前的状态

4. 数据类型

redis目前提供四种数据类型:string,list,set及zset和Hash。

String就是最简单的键值对

List是一个链表结构 ,主要功能是push、pop

Set是无序集合 和数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。

ZSet是有序集合,在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的sqlserver表,一列存value,一列存顺序

Hash 数据类型允许用户用Redis存储对象类型, key => [{name: value} ...]

LIST
 
RPUSH friends "Max"                                         --从右边插入
RPUSH friends "Justin"                                           
LPUSH friends "Eric"                                         --从左面插入
LRANGE friends 0 -1                                        --从左面取0到-1(全部)
LRANGE friends 0 1
LLEN friends                                                   – 列表的长度
LPOP friends                                                     --从左面移除并返回  
RPOP friends                                               --从右面移除并返回
SET
SADD nosql "redis"                                            --在集合中加入redis

SADD nosql "mongo"
SADD nosql "cassendra"

SADD nosql " revendb"
SMEMBERS nosql                                         --查看集合的所有元素
SREM nosql "redis"                                       --移除集合中的元素
SISMEMBER nosql "redis"                                    --集合中是否有元素 redis
SISMEMBER nosql "mongo"
SADD rdb "mysql"
SADD rdb "postgresql"
SADD rdb "sql server"
SUNION nosql rdb                                   --取集合的并集

ZSET

ZADD movies 0.3 "Twilight"                                    --向有序集合中插入Twilight ,分数为0.3
ZADD movies  0.9 "Zootopia"
ZADD movies  0.0001 "TinyTime"
ZADD movies  0.8 "Frozen"
ZADD movies  0.91 "TheGiver"
ZADD movies  0.98 "Boyhood"
ZADD movies  0.7 "Nowyouseeme" 

ZRANGE movies 2 4                                                                --从有序集合中取 2 到 4的元素
ZRANGE movies 2 4 WITHSCORES                                                         --从有序集合中取 2 到 4的元素,并返回分数
ZREM movies "Nowyouseeme"                                             --从有序集合中移除
HASH
HSET session:123 name "john"                                             --向Hash中设置name 为 john
HSET session:123 time "2015-5-5"
HGETALL session:123                                              --获取hash session:123中的所有项
HMSET session:123 time "2016-6-6" email "john@gmail.com.cn"                               --批量set
HGET session:123 name                      --获取hash session:123 的name
HLEN session:123                                – 元素个数

HSET session:123 visits 10

HINCRBY session:123 visits 1
HINCRBY session:123 visits 10
HDEL session:123 visits                    --删除元素
HINCRBY session:123 visits 1
 
其他
取交集ZINTERSTORE
ZADD movies 0.3 "Twilight"
ZADD movies 0.9 "Zootopia"
ZADD movies 0.0001 "TinyTime"  -- 不能有空格
ZADD movies 0.8 "Frozen"
ZADD movies 0.91 "TheGiver"
ZADD movies 0.98 "Boyhood"
ZADD movies 0.7 "Nowyouseeme"
ZADD movies 0.88 "Madagascar"
 
SADD group:animation "Zootopia"
SADD group:animation "Frozen"
SADD group:animation "Madagascar"
 
ZINTERSTORE sort:animation 2 group:animation movies
 

5. C#测试

C#客户端,我们选用 StackExchange.Redis

项目地址 https://github.com/StackExchange/StackExchange.Redis

或者通过nuget 获取

Install-Package StackExchange.Redis

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
class Program
{
    static void Main(string[] args)
    {
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("10.4.18.125:6379");   //获取redis连接
        IDatabase db = redis.GetDatabase();   // select db  默认是0
        db.StringSet("hello", "world");
        var value = db.StringGet("hello");
        Console.WriteLine(value);
        Console.ReadKey();
    }
}

1. Redis是什么

1. Redis是什么

与memcached 和 couchbase类似,redis是非常快速的基于内存的键值数据库,使用标准c编写,是使用最广泛的缓存中间件。利用Redis提供的五种基本数据类型(String, List, Set, Zset, Hash)可以做一些很灵活很强大的应用程序组件。

2. 安装

CentOS

通过redis的官方网站 http://redis.io/download 可以下载到最新的redis源代码,也可以通过232上的静态资源下载3.0.7版本 http://10.58.8.232:10000/redis-3.0.7.tar.gz

先安装gcc, 再make编译,然后make install 安装,然后通过redis-server启动redis实例

yum -y install gcc
wget http://10.58.8.232:10000/redis-3.0.7.tar.gz
tar -xzvf redis-3.0.7.tar.gz
make MALLOC=libc
make install
redis-server redis.conf

启动之后会是这个界面

配置一下 redis.conf,将daemonize 设置为yes

然后再次启动

redis-server redis.conf

此时redis可后台运行

通过redis-cli可以运行测试

SET hello world

GET hello

Windows

Redis官方不支持windows版本,有个开源项目是干这个的  https://github.com/MSOpenTech/redis

安装文件下载地址 https://github.com/MSOpenTech/redis/releases/download/win-2.8.2400/Redis-x64-2.8.2400.msi

双击安装

默认安装路径是 C:\Program Files\Redis

cd到这个目录

设置 redis.windows.conf 的maxheap(建议设置为100M以上)

然后执行 redis-server.exe redis.windows.conf

3. 基本概念和命令

单线程

redis使用了单线程,一个实例只使用一个cpu,这样避免了不必要的上下文切换和竞争资源。因为redis不是计算密集型的(数据密集型),所以对cpu要求不高。如果单核性能不够用,可以多开几个进程。

db

db 就相当于MySQL数据库,不同的应用程序数据存储在不同的数据库下,不同的应用程序数据存储在不同的数据库下。同一个db内不允许出现重复的key,因为Redis中的DB是相互独立存在的,所以在不同的db中可以出现重复的key。

默认有db0 ~ db15 16个db, 数量可以在redis.conf中更改

databases 16

可以通过下面的命令来切换到不同的数据库下

随后,所有的命令将使用数据库3,知道你明确的切换到另一个数据库下

每个数据库都有属于自己的空间,不必担心之间的key冲突。

flushdb 命令清除数据,只会清除当前的数据库下的数据,不会影响到其他数据库。

用 keys * 可以查找当前db(默认是0)下的所有key

常用命令

SET name "centanet"    – 设置name的值为centanet

GET name     --获取name的值

SET connections 10     – 设置connections的值为10
INCR connections        – 将connections 的值递增, 此时connections 为 11
DEL connections    – 删除connections
INCR connections   – 将connections递增,此时connections 为 1
SET meal "rice"          – 设置meal的值为rice
EXPIRE meal 120    --设置meal的过期时间为120s
TTL meal                      – 查看meal的生命 Time-To-Live

INFO 命令可以查看redis服务器当前的状态

4. 数据类型

redis目前提供四种数据类型:string,list,set及zset和Hash。

String就是最简单的键值对

List是一个链表结构 ,主要功能是push、pop

Set是无序集合 和数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。

ZSet是有序集合,在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的sqlserver表,一列存value,一列存顺序

Hash 数据类型允许用户用Redis存储对象类型, key => [{name: value} ...]

LIST
 
RPUSH friends "Max"                                         --从右边插入
RPUSH friends "Justin"                                           
LPUSH friends "Eric"                                         --从左面插入
LRANGE friends 0 -1                                        --从左面取0到-1(全部)
LRANGE friends 0 1
LLEN friends                                                   – 列表的长度
LPOP friends                                                     --从左面移除并返回  
RPOP friends                                               --从右面移除并返回
SET
SADD nosql "redis"                                            --在集合中加入redis

SADD nosql "mongo"
SADD nosql "cassendra"

SADD nosql " revendb"
SMEMBERS nosql                                         --查看集合的所有元素
SREM nosql "redis"                                       --移除集合中的元素
SISMEMBER nosql "redis"                                    --集合中是否有元素 redis
SISMEMBER nosql "mongo"
SADD rdb "mysql"
SADD rdb "postgresql"
SADD rdb "sql server"
SUNION nosql rdb                                   --取集合的并集

ZSET

ZADD movies 0.3 "Twilight"                                    --向有序集合中插入Twilight ,分数为0.3
ZADD movies  0.9 "Zootopia"
ZADD movies  0.0001 "TinyTime"
ZADD movies  0.8 "Frozen"
ZADD movies  0.91 "TheGiver"
ZADD movies  0.98 "Boyhood"
ZADD movies  0.7 "Nowyouseeme" 

ZRANGE movies 2 4                                                                --从有序集合中取 2 到 4的元素
ZRANGE movies 2 4 WITHSCORES                                                         --从有序集合中取 2 到 4的元素,并返回分数
ZREM movies "Nowyouseeme"                                             --从有序集合中移除
HASH
HSET session:123 name "john"                                             --向Hash中设置name 为 john
HSET session:123 time "2015-5-5"
HGETALL session:123                                              --获取hash session:123中的所有项
HMSET session:123 time "2016-6-6" email "john@gmail.com.cn"                               --批量set
HGET session:123 name                      --获取hash session:123 的name
HLEN session:123                                – 元素个数

HSET session:123 visits 10

HINCRBY session:123 visits 1
HINCRBY session:123 visits 10
HDEL session:123 visits                    --删除元素
HINCRBY session:123 visits 1
 
其他
取交集ZINTERSTORE
ZADD movies 0.3 "Twilight"
ZADD movies 0.9 "Zootopia"
ZADD movies 0.0001 "TinyTime"  -- 不能有空格
ZADD movies 0.8 "Frozen"
ZADD movies 0.91 "TheGiver"
ZADD movies 0.98 "Boyhood"
ZADD movies 0.7 "Nowyouseeme"
ZADD movies 0.88 "Madagascar"
 
SADD group:animation "Zootopia"
SADD group:animation "Frozen"
SADD group:animation "Madagascar"
 
ZINTERSTORE sort:animation 2 group:animation movies

5. C#测试

C#客户端,我们选用 StackExchange.Redis

项目地址 https://github.com/StackExchange/StackExchange.Redis

或者通过nuget 获取

Install-Package StackExchange.Redis

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
class Program
{
    static void Main(string[] args)
    {
        ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("10.4.18.125:6379");   //获取redis连接
        IDatabase db = redis.GetDatabase();   // select db  默认是0
        db.StringSet("hello", "world");
        var value = db.StringGet("hello");
        Console.WriteLine(value);
        Console.ReadKey();
    }
}

 

Redis -- 01 入门的更多相关文章

  1. Redis 快速入门

    Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Red ...

  2. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  3. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  4. Redis快速入门:安装、配置和操作

    本文是有关Redis的系列技术文章之一.在之前的文章中介绍了<Redis快速入门:初识Redis>,对Redis有了一个初步的了解.今天继续为大家介绍Redis如何安装.配置和操作. 系列 ...

  5. Java中Redis简单入门

    Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. Redis官方网网站是:http://www.redis.io/,如下: Redis ...

  6. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  7. Redis从入门到精通:初级篇

    原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...

  8. .NET分布式缓存Redis从入门到实战

    一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用. 本次分享课程 ...

  9. 超详细Redis数据库入门教程

    [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis ...

随机推荐

  1. ajax 中boolean值技巧

    // 利用判断 数据重复 function checkId () { var flag = true; $.ajax({ url: "", type: "post&quo ...

  2. entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended

    对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...

  3. 从angularJS改道Vue.js,趟过第一个坑!

    vue采用 new vue()初始化,显然vue内部没有类似jquery ready函数的机制,在文档加载完成后再执行初始化. 今天新学习vue,由于vue采用es5的特殊机制更新UI,我不确定ipa ...

  4. schematool -dbType mysql -initSchema hive startup failed...try this

    schematool -dbType mysql -initSchema hive startup failed

  5. C#中MessageBox用法大全

    我们在程序中经常会用到MessageBox. MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~&quo ...

  6. PHP 监控服务器动态

    预期准备 一个139邮箱,收到邮件后,可以免费给你短信提醒.如果你不需要短信提醒功能,用什么邮箱都可以 另外一个可以运行PHP文件的Web服务器(相当于监控服务器),现在免费的PHP网站空间很多,上网 ...

  7. CodeForces比赛总结表

    Codeforces A                     B                        C                             D            ...

  8. 10——operator=返回reference to *this

    注意operator=返回一个引用,便于连锁赋值

  9. 解析C语言结构体对齐(内存对齐问题)

    C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...

  10. Lae程序员小漫画(三),仅供一乐

    Lae软件开发,快乐程序员!