码迷,mamicode.com
首页 > 其他好文 > 详细

Redis -- 01 入门

时间:2016-08-18 12:54:42      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

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.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();
    }
}

技术分享

 

 

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 入门

标签:

原文地址:http://www.cnblogs.com/cookiezhi/p/5783371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!