Redis 是一款开源的NoSQL key-value 存储系统。Redis 常常和MemCache 一起提到,但与 MemCache 相比,Redis 是一种数据库,可以对数据持久化,同时, Redis 数据结构比较丰富——string、 hash、 list、 set、 sorted set。
1.安装与启动 Redis:
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://download.redis.io/releases/redis-3.0.0.tar.gz [root@localhost src]# tar -zxf redis-3.0.0.tar.gz
与编译安装大多数其他软件不同的是,Redis 已经做过 ./configure,因此直接 make&& make install 即可:
[root@localhost src]# cd redis-3.0.0 [root@localhost redis-3.0.0]# make zmalloc.h:50:31:error: jemalloc/jemalloc.h: No such file or directory zmalloc.h:55:2:error: #error "Newer version of jemalloc required" make[1]: ***[adlist.o] Error 1
通过报错信息不难发现,jemalloc版本过低,用 yum 命令安装:
[root@localhost redis-3.0.0]# yum install -y jemalloc-devel [root@localhost redis-3.0.0]# make cc:../deps/hiredis/libhiredis.a: No such file or directory cc:../deps/lua/src/liblua.a: No such file or directory cc:../deps/jemalloc/lib/libjemalloc.a: No such file or directory make[1]: ***[redis-server] Error 1 [root@localhost redis-3.0.0]# yum install -y hiredis-devel [root@localhost redis-3.0.0]# yum install -y lua-devel
安装完这些库以后,如果在 pwd 目录下仍然报相同的 No such file or directory 错误,可以通过再次解压 Redis 源码包重新编译来解决:
[root@localhost src]# tar -zxf redis-3.0.0.tar.gz -C /usr/local/ [root@localhost src]# cd /usr/local/redis-3.0.0 [root@localhost redis-3.0.0]# make Hint: It's agood idea to run 'make test' ;) make[1]: Leavingdirectory `/usr/local/redis-3.0.0/src'
出现以上信息表示编译安装已经成功,此时我们需要用的二进制文件位于 /usr/local/redis-3.0.0/src/ 下,分别是:
(1)redis-benchmark —— 用于 Redis 性能测试
(2)redis-check-aof —— 用于检查 aof 日志的工具
(3)redis-check-dump —— 用于检查 rbd 日志的工具
(4)redis-server —— Redis 服务器进程
(5)redis-cli —— Redis 客户端进程
(6)redis-sentinel —— 软链接文件,软链接到 redis-server
当然,为了方便,我们也可以将这些二进制文件单独安装到其他目录(这里的 PREFIX 需要使用大写):
[root@localhost redis-3.0.0]# make install PREFIX=/usr/local/redis [root@localhost redis]# ls /usr/local/redis/bin/ redis-benchmark redis-check-dump redis-sentinel redis-check-aof redis-cli redis-server
这样我们所有可用的二进制文件都被移动到指定的目录下了。同样为了方便配置,拷贝一份 Redis 配置文件到安装目录:
[root@localhost redis]# cp /usr/local/redis-3.0.0/redis.conf ./
这样一来,我们就可以通过如下命令启动 Redis Server 了,后面的 ./redis.conf 指定该 Redis Server 使用的是当前目录下的 redis.conf 配置文件:
[root@localhost redis]# bin/redis-server ./redis.conf
图-1 Redis启动成功页面
如果命令运行后如图 1 所示,表示启动成功。Redis 的默认端口是 6379。此时,新打开一个 shell,使用如下命令使用 Redis 客户端连接 Redis服务器:
[root@localhost ~]# /usr/local/redis/redis-cli -h 127.0.0.1 -p 6379
其中,-h 指定 Redis 服务器 ip ,-p 指定 Redis 服务器端口。如果没有明确指定,则连接 127.0.0.1:6379 。命令执行后,出现如下一行内容则表示连接成功:
127.0.0.1:6379>
如果想要关闭 Redis 服务器,使用如下命令:
[root@localhost ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p6379 shutdown
2.Redis 操作key:
在 Redis Client 命令行中使用如下命令对 key 进行操作:
(1)增、查 key-value:
127.0.0.1:6379> set name Lucy OK 127.0.0.1:6379> get name "Lucy" 127.0.0.1:6379> set sex female 127.0.0.1:6379> set job nurse 127.0.0.1:6379> keys * //三种正则匹配符号可以使用,* ? [] 1) "job" 2) "sex" 3) "name" 127.0.0.1:6379> keys n?me 1) "name" 127.0.0.1:6379> keys j[abco]b 1) "job"
(2)删除 key:
127.0.0.1:6379> del job (integer) 1 //返回1表示操作成功,返回0表示操作失败
(3)修改 key:
127.0.0.1:6379> set sex male OK 127.0.0.1:6379> rename sex personsex //不管之前是否存在personsex,重命名都会成功 OK 127.0.0.1:6379> renamenx personsex name //renamenx = rename if new name does notexist,即不会发生覆盖原有key-value的情况 (integer) 0 //返回1表示操作成功,返回0表示操作失败 127.0.0.1:6379> renamenx sex personsex (integer) 1 //返回1表示操作成功,返回0表示操作失败
(4)移动 key:
Redis 默认有 16 个存储空间,可以简单理解为 16 张表,编号 0 - 16。默认情况下,所有key-value 位于 0 表下,可以使用 move命令将其移动到指定编号的表中, select 命令用于选择指定编号的表:
127.0.0.1:6379> move name 1 (integer) 1 127.0.0.1:6379> keys * 1) "sex" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * 1) "name"
(5)返回随机 key:
127.0.0.1:6379> randomkey "name" 127.0.0.1:6379> randomkey "name" 127.0.0.1:6379> randomkey "sex"
(6)相应 key 是否存在:
127.0.0.1:6379> exists name (integer) 1 //返回1表示存在,返回0表示不存在 127.0.0.1:6379> exists person (integer) 0 //返回1表示存在,返回0表示不存在
(7)判断 key 的类型:
127.0.0.1:6379> type name string 127.0.0.1:6379> type job none
可能的类型为string, list, set, order set, hash ,如果 key 不存在,则返回 none。
(8)查询 key 声明周期,以秒为单位:
127.0.0.1:6379> ttl name (integer) -1 //返回-1表示永久有效,返回-2表示key不存在,返回n则表示n秒后过期 127.0.0.1:6379> ttl person (integer) -2
若要以毫秒为单位使用,使用 pttl 命令。
(9)设置 key 声明周期,以秒为单位:
127.0.0.1:6379> expire name 20 (integer) 1 127.0.0.1:6379> ttl name (integer) 12
若要以毫秒为单位使用,使用 pttl 命令。
(10)使 key 永久生效:
127.0.0.1:6379> expire name 20 (integer) 1 127.0.0.1:6379> persist name (integer) 1 127.0.0.1:6379> ttl name (integer) -1
转载于:https://blog.51cto.com/xitongjiagoushi/1641138