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 |
|
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实例
|
启动之后会是这个界面
配置一下 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 |
|