• Redis 01 入门


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

     

     
  • 相关阅读:
    密码保护
    实现搜索功能
    完成个人中心—导航标签
    个人中心标签页导航
    评论列表显示及排序,个人中心显示
    完成评论功能
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局。
    JavaScript Array Reduce用于数组求和
    【Angular5】 返回前一页面 go back to previous page
  • 原文地址:https://www.cnblogs.com/cookiezhi/p/5783371.html
Copyright © 2020-2023  润新知