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 email "[email protected]"

HSET session:123 time "2015-5-5"

HGETALL session:123                                              --获取hash session:123中的所有项

HMSET session:123 time "2016-6-6" email "[email protected]"                               --批量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 email "[email protected]"

HSET session:123 time "2015-5-5"

HGETALL session:123                                              --获取hash session:123中的所有项

HMSET session:123 time "2016-6-6" email "[email protected]"                               --批量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();

    }

}

时间: 2024-11-06 11:06:06

Redis -- 01 入门的相关文章

Redis 快速入门

Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Redis与Spring 的整合 .来让读者对它有一个初步的了解.下一章再通过介绍配置文件来搭建Redis的主从模式和集群模式(配置大于编程,先从简单的编程入手). 效果图: 需求:对商品类目进行Redis缓存处理 技术:Redis,Spring,SpringMVC,Mybatis,EasyUI 说明:E

Redis快速入门:初识Redis

[IT168 专稿]在之前的文章中介绍了<Redis快速入门:选择Key-Value Store>,今天给大家介绍Redis的入门知识.Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持. 1.数据类型 作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系.但是,除了常规的数值或字符串,Redis的键值还

Redis快速入门及实现

redis的概念 (1)Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等.这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Red

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

本文是有关Redis的系列技术文章之一.在之前的文章中介绍了<Redis快速入门:初识Redis>,对Redis有了一个初步的了解.今天继续为大家介绍Redis如何安装.配置和操作. 系列文章: Redis快速入门:Key-Value存储系统简介 Redis快速入门:选择Key-Value Store Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMwa

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

这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊聊

redis快速入门-进阶知识

前言 前面我们已经学习了redis的数据类型,接下来将简单学习下redis的事务,排序,管道,优化存储空间以及管理等知识. 事务 事务的概念在此不赘述,学过数据库原理的都应该知道. redis的事务:先将属于一个事务的命令发送给redis,然后再让redis依次执行这些命令: MULTI //开始一个事务 //事务的命令 EXEC //执行事务 EXEC告诉redis将等待执行的事务队列中的所有命令(即刚才所有返回QUEUED的命令)按照发送顺序依次执行. 错误处理 1.语法错误:命令不存在或者

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

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

一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用.本次分享课程包含以下知识点: 1.StackExchange.Redis (简称:SE)驱动在C#中Redis几种数据结构学习和使用. 2.ServiceStack.Redis ( 简称: SS) 驱动在C#中Redis几种数据结构学习和使用. 3.Redis主从集群服务器搭建和学习. 4.在ASP.NET中Re

Redis从入门到精通:初级篇

原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中也一直在用Redis,感觉是时候对过往Redis的所学进行一次系统性的总结.<Redis从入门到精通>系列会分为初级.中级.高级三篇,从浅入深讲解Redis相关知识点. 在本文中,我们将看到以下内容: Redis简介 Redis安装.启动 Redis登录授权 Redis配置文件redis.conf