Redis服务搭建与基础功能示例

一、Redis简介

  Redis是一个非关系型远程内存数据库,它也是一个Key-value模型的数据库。Redis支持5种数据类型(string、list、set、sorted set、hash),可以将各式各样的问题很自然的映射到这些数据结构上。虽然Redis是一个内存数据库,但可通过自身的复制、持久化等特性,很方便的将数据存储到磁盘,并且Redis有着每秒上百万次的请求处理能力。

  Redis可用作数据库(Database)、缓存(Cache)和消息代理(Message Broker)。Redis还自带复制、事务、主从复制、Lua脚本、存储项淘汰、高可用Redis Sentinel、Redis Cluster等功能。

二、Redis安装

  Redis现在最新版已经升级到了5.0,epel版本为Redis3.0。这里介绍yum安装Redis:

1.yum安装:

~]# yum install -y redis
 1 /etc/logrotate.d/redis #
 2 /etc/redis-sentinel.conf #哨兵服务配置文件
 3 /etc/redis.conf #主程序配置文件
 4 /etc/systemd/system/redis-sentinel.service.d
 5 /etc/systemd/system/redis-sentinel.service.d/limit.conf
 6 /etc/systemd/system/redis.service.d
 7 /etc/systemd/system/redis.service.d/limit.conf
 8 /usr/bin/redis-benchmark #评估程序
 9 /usr/bin/redis-check-aof
10 /usr/bin/redis-check-rdb
11 /usr/bin/redis-cli #Redis客户端程序
12 /usr/bin/redis-sentinel #Redis哨兵服务程序
13 /usr/bin/redis-server #Redis主程序
14 /usr/lib/systemd/system/redis-sentinel.service #CentOS7上的哨兵服务管理程序
15 /usr/lib/systemd/system/redis.service ##CentOS7上的主程序管理程序
16 /usr/libexec/redis-shutdown
17 /usr/share/doc/redis-3.2.12
18 /usr/share/doc/redis-3.2.12/00-RELEASENOTES
19 /usr/share/doc/redis-3.2.12/BUGS
20 /usr/share/doc/redis-3.2.12/CONTRIBUTING
21 /usr/share/doc/redis-3.2.12/MANIFESTO
22 /usr/share/doc/redis-3.2.12/README.md
23 /usr/share/licenses/redis-3.2.12
24 /usr/share/licenses/redis-3.2.12/COPYING
25 /usr/share/man/man1/redis-benchmark.1.gz
26 /usr/share/man/man1/redis-check-aof.1.gz
27 /usr/share/man/man1/redis-check-rdb.1.gz
28 /usr/share/man/man1/redis-cli.1.gz
29 /usr/share/man/man1/redis-sentinel.1.gz
30 /usr/share/man/man1/redis-server.1.gz
31 /usr/share/man/man5/redis-sentinel.conf.5.gz
32 /usr/share/man/man5/redis.conf.5.gz
33 /var/lib/redis #默认数据目录
34 /var/log/redis #默认日志目录
35 /var/run/redis

2.启动Redis

~]# systemctl start redis
~]# ss -lnt #查看监听端口状态,Redis默认监听端口为6379

在没有配置认证的情况下,可以直接登入Redis:

~]# redis-cli
127.0.0.1:6379>

可用 redis-cli -h 获取相关参数选项及功能,常用参数如下:

1 -h <hostname>:Redis服务端的地址
2 -p <port>:指定连接的端口,默认为6379
3 -s <socket>:若不是通过IP+端口则可使用指定socket登录
4 -a <password>:连接Redis的密码,Redis的认证设置只有用户名没有密码。Redis用户名默认就一个,没有权限分级的概念。

连接至Redis后可用 SELECT 选择数据库:

6379:> SELECT 0 #Redis默认用数字来代表库。
OK

3.Redis种5值的类型的基本使用介绍

  Redis是Key-value类型,它所有的数据都是键值类型,但值的类型有5种:

1.String

  常用指令:

1 SET <key> <value> #将key的值设置为value,value可以是数值。还可以设置数据的有效期限,过期时间。
2 GET <key> #获取key的数据
3 APPEND <key> <value> #追加数据
4 DECR <key> #键值加1
5 DECRBY #键值加指定数值
6 INCR <key> #键值减1
7 INCR <key> #键值减指定数值
8 MSET <key> <value> #一次创建多个键值
9 MGET <key> #一次查看多个键值

例:

 1 127.0.0.1:6379> SET name tom
 2 OK
 3 127.0.0.1:6379> GET name
 4 "tom"
 5 127.0.0.1:6379> APPEND name jerry
 6 (integer) 8
 7 127.0.0.1:6379> GET name
 8 "tomjerry"
 9 127.0.0.1:6379> SET count 0
10 OK
11 127.0.0.1:6379> INCR count
12 (integer) 1
13 127.0.0.1:6379> GET count
14 "1"
15 127.0.0.1:6379> INCR count
16 (integer) 2
17 127.0.0.1:6379> GET count
18 "2"
19 127.0.0.1:6379> INCRBY count 5
20 (integer) 7
21 127.0.0.1:6379> GET count
22 "7"
23 127.0.0.1:6379>

2.List

  LIst可以理解为一个队列,如图:

  常用指令:

 1 LSET <key> <index> <value> #根据索引设定值
 2 RPUSH <key> <value> #从右侧增加值
 3 LPUSH <key> <value> #从左侧增加值
 4 RPOP <key> #从右侧弹出(删除)值,只能是首尾
 5 LPOP <key> #从左侧弹出(删除)值,只能是首尾
 6 RPUSHX <key> <value> #从右侧增加值,列表必须存在
 7 LPUSHX <key> <value> #从左侧增加值,列表必须存在
 8 LREM #删除指定值
 9 LINDEX <key> <index> #从索引中获得一个元素
10 LLEN <key> #查看Key有多少个元素

例:

 1 127.0.0.1:6379> LPUSH weekdays Mon Tue
 2 (integer) 2
 3 127.0.0.1:6379> LINDEX weekdays 0
 4 "Tue"
 5 127.0.0.1:6379> LINDEX weekdays 1
 6 "Mon"
 7 127.0.0.1:6379> RPUSH weekdays Wed Thu
 8 (integer) 4
 9 127.0.0.1:6379> LINDEX weekdays 2
10 "Wed"
11 127.0.0.1:6379> LINDEX weekdays 3
12 "Thu"
13 127.0.0.1:6379> LPOP weekdays
14 "Tue"
15 127.0.0.1:6379> RPOP weekdays
16 "Thu"
17 127.0.0.1:6379> LINSERT weekdays BEFORE Wed Fri
18 (integer) 3
19 127.0.0.1:6379> LINDEX weekdays 1
20 "Fri"

3.Hash

1 HSET <key> <field> <value> :设定键和值还有下标
2 HMSET <key> <field> <value>:设定多个键和值还有下标
3 HGET <key> <field>:查看键的下标
4 HMGET <key> <field>:查看多个键的下标
5 HKEYS <key>:显示所有定义的key
6 HVALS <key>:显示所有的value
7 HDEL <key> <field>:删除指定键的下标
8 HGETALL <key>:显示所有

例:

 1 127.0.0.1:6379> HSET stu1 name tom
 2 (integer) 1
 3 127.0.0.1:6379> HSET stu1 age 25
 4 (integer) 1
 5 127.0.0.1:6379> HMSET stu1 gender Male major Computer
 6 OK
 7 127.0.0.1:6379> HKEYS stu1
 8 1) "name"
 9 2) "age"
10 3) "gender"
11 4) "major"
12 127.0.0.1:6379> HVALS stu1
13 1) "tom"
14 2) "25"
15 3) "Male"
16 4) "Computer"

4.Set

  无序集合数据类型,主要用来求交差并补集的

例:

 1 127.0.0.1:6379> SADD tom jack hermes tony
 2 (integer) 3
 3 127.0.0.1:6379> SADD jerry tony trump real
 4 (integer) 3
 5 127.0.0.1:6379> SINTER tom jerry
 6 1) "tony"
 7 127.0.0.1:6379> SUNION tom jerry
 8 1) "hermes"
 9 2) "jack"
10 3) "tony"
11 4) "real"
12 5) "trump"
13 127.0.0.1:6379> SDIFF jerry tom
14 1) "trump"
15 2) "real"
16 127.0.0.1:6379> SDIFF tom jerry
17 1) "hermes"
18 2) "jack"
19 127.0.0.1:6379> SPOP jerry
20 "trump"
21 127.0.0.1:6379> SMEMBERS tom
22 1) "tony"
23 2) "hermes"
24 3) "jack"

5.Sorted-set

  与Set类型相似,但Sort-set属于有序集合。

例:

 1 127.0.0.1:6379> ZADD colors 1 red 2 blue 3 yellow 8 green 6 gray
 2 (integer) 5
 3 127.0.0.1:6379> ZCARD colors
 4 (integer) 5
 5 127.0.0.1:6379> ZSCORE colors red
 6 "1"
 7 127.0.0.1:6379> ZRANGE colors 0 6
 8 1) "red"
 9 2) "blue"
10 3) "yellow"
11 4) "gray"
12 5) "green"

4.订阅

  常用指令:

1 PSUBSCRIBE <pattern>:订阅指定频道的指定内容
2 PUBLISH <channel> <message>:生成频道并往频道中生产信息
3 PUNSUBSCRIBE <pattern>:取消订阅指定频道的指定内容
4 SUBSCRIBE <channel>:订阅整个频道
5 UNSUBSCRIBE <channel>:取消订阅整个频道

例:

原文地址:https://www.cnblogs.com/readygood/p/9883970.html