一、redis简介
redis是一个key-value存储的系统,vaue可以是string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(有序集合)这五种。
二、Linux下安装redis
Linux下安装redis,下载地址:http://redis.io/download,下载最新稳定版本。
本文使用的入门版本是2.8.17。也可以下载其它的版本。各个版本的基础使用上差异不大,均可作入门。
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
# 编译
make
三、配置redis.conf
redis的配置文件在redis.conf在redis-2.8.17目录下,可以打开该配置文件查看各个配置项的解释。
四、启动redis服务
redis启动时默认以非守护进程的方式启动的,可以在redis.conf文件修改daemonize的值为true,改成守护进程的方式启动。redis的日志输出默认是标准输出,如果配置 Redis 为守护进程方式运行,则日志将会发送给 /dev/null。可参考配置修改。
redis-2.8.17/src目录下有redis-server和redis-cli两个二进制文件,分别用来启动服务端和客户端。
启动redis服务:
# 启动redis服务,需要指定redis.conf配置
./redis-server ../redis.conf
redis服务的默认端口是6379,可以从下面的命令看到:
[root@izwz9d2a0eoi8bhclssv1vz src]# ps -ef | grep redis
root 16834 1 0 14:22 ? 00:00:03 ./redis-server *:6379
启动redis客户端,设置一对key/value,验证redis服务:
[root@izwz9d2a0eoi8bhclssv1vz src]# ./redis-cli
127.0.0.1:6379> set foo hello
OK
127.0.0.1:6379> get foo
"hello"
上面的命令中,将使用set命令将<foo, hello>存到了redis中,然后使用get命令获取foo的值,且成功获取,说明redis启动成功。
五、redis数据类型
redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
5.1 String(字符串)
下面设置key为name,value为lan
127.0.0.1:6379> set name lan
OK
127.0.0.1:6379> get name
"lan"
5.2 Hash(哈希)
hash 是一个 string 类型的 field 和 value 的映射表,可用于存储一个对象。
下面设置key为names,value为{"name1": "Mike", "name2": "Sarah", "name3":"John"},这个value的结构是哈希结构。
127.0.0.1:6379> hmset names name1 Mike name2 Sarah
OK
127.0.0.1:6379> hmset names name3 John
OK
127.0.0.1:6379> hget names name1
"Mike"
127.0.0.1:6379> hget names name2
"Sarah"
127.0.0.1:6379> hget names name3
"John"
5.3 List(列表)
redis的List是简单的字符串列表,按照插入顺序排序。
下面设置key为colors,value为["black", "white", "blue"],value是一个List结构的数据。
127.0.0.1:6379> lpush colors black white
(integer) 2
127.0.0.1:6379> lpush colors blue
(integer) 3
127.0.0.1:6379> lrange colors 0 10
1) "blue"
2) "white"
3) "black"
(命令 lrange xxxx m n ,查找下标是m到n的元素。)
5.4 Set(集合)
redis的Set是string类型的无序集合,不允许有重复的元素。
下面设置key为types,value为["int", "short", "byte"],value是Set结构的数据。
127.0.0.1:6379> sadd types int short
(integer) 2
127.0.0.1:6379> sadd types byte
(integer) 1
127.0.0.1:6379> smembers types
1) "byte"
2) "short"
3) "int"
5.5 zset(有序集合)
zset和set一样也是string类型元素的集合,不允许有重复的元素。不同的是每个元素都会关联一个double类型的分数(score)。集合中的元素通过分数进行从小到大的排序。
127.0.0.1:6379> zadd scores 80 lan 90 Mike
(integer) 2
127.0.0.1:6379> zadd scores 100 wang
(integer) 1
127.0.0.1:6379> zrangebyscore scores 0 10
(empty list or set)
127.0.0.1:6379> zrangebyscore scores 0 1000
1) "lan"
2) "Mike"
3) "wang"
(命令 zrangebyscore xxxx m n ,查找分数在m到n范围内的元素。)