走近Redis(一)——Redis安装及基本key操作

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/ 下,分别是:

1redis-benchmark —— 用于 Redis 性能测试

2redis-check-aof —— 用于检查 aof 日志的工具

3redis-check-dump —— 用于检查 rbd 日志的工具

4redis-server —— Redis 服务器进程

5redis-cli —— Redis 客户端进程

6redis-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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/3F/wKioL1VCTLmRHfOmAAHumJzWmUA081.jpg" title="redis.png" alt="wKioL1VCTLmRHfOmAAHumJzWmUA081.jpg" />

-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


本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1641138

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章