Redis基本知识与使用

Redis

Redis是一个开源的使用ANSI C语言(对c语言进行了标准化)编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。
Redis是一个key-value存储系统。和Memcached类似,他支持存储的value类型相对更多,包括string(字符串)list(链表)set(集合)zset(sorted set有序集合)hash(哈希类型)。这些数据类型都支持pop/push、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序,与memcached一样,为了保证效率,数据都是缓存在内存中的。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

缓存解决的问题

因为频繁的数据库请求,会导致数据库压力过大,并且请求速度较慢(比如:数据库隔离级别为了避免脏读和幻读,会加入读写锁机制,从而导致访问出现延迟等待现象)。总而言之,缓存是为了减轻数据库的压力。

基本使用

安装

1、下载用来源码编译安装redis的安装包redis-3.0.2.tar.gz,解压

2、cd redis-3.0.2
进行源码编译安装
make
执行make会报错,因为需要安装gcc
yum instaall gcc -y
重新执行make
在这里插入图片描述
3、make install PREFIX=/usr/local/redis
在这里插入图片描述
4、将配置文件移动到redis安装目录下
mv redis.conf /usr/local/redis/
5、启动服务、配置
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
第一个是启动redis服务器
第二个是启动服务器所需的配置
在这里插入图片描述
6、默认情况,Redis不是在后台运行,我们需要把redis放在后台运行
vim /usr/local/redis/redis.conf
将daemonize的值改为yes
在这里插入图片描述7、让redis开机自启

vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /usr/local/redis/redis-conf
在这里插入图片描述
8、打开redis并连接
/usr/local/redis/bin/redis-server /usr/local/redis/redis-conf
/usr/local/redis/bin/redis-cli
在这里插入图片描述
9、停止服务
/usr/local/redis/bin/redis-cli shutdown
或者
pkill redis-server

10、/usr/local/redis/bin目录下的几个关键文件

redis-benchmark:redis性能测试工具

redis-check-aof:检查aof日志的工具

redis-check-dump:检查rdb日志的工具

redis-cli:连接用的客户端

redis-server:redis服务进程

11、redis.conf 配置项介绍

daemonize:如需要在后台运行,把该项的值改为yes

pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址

bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项

port:监听端口,默认为6379

timeout:设置客户端连接时的超时时间,单位为秒

loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice

logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上

database:设置数据库的个数,默认使用的数据库是0

save:设置redis进行数据库镜像的频率

rdbcompression:在进行镜像备份时,是否进行压缩

dbfilename:镜像备份文件的文件名

dir:数据库镜像备份的文件放置的路径

slaveof:设置该数据库为其他数据库的从数据库

masterauth:当主数据库连接需要密码验证时,在这里设定

requirepass:设置客户端连接后进行任何其他指定前需要使用的密码

maxclients:限制同时连接的客户端数量

maxmemory:设置redis能够使用的最大内存

appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态

appendfsync:设置appendonly.aof文件进行同步的频率

vm_enabled:是否开启虚拟内存支持

vm_swap_file:设置虚拟内存的交换文件的路径

vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0

vm_page_size:设置虚拟内存页的大小

vm_pages:设置交换文件的总的page数量

vm_max_thrrads:设置vm IO同时使用的线程数量

redis的安装到这里就全部完成

使用

五大数据类型

既然redis是缓存,那么它主要功能就是存储数据和获取数据
1、存储字符串
存储数据:set key value
获取数据:get key
举例:
存储姓名:set name liming
获取:get name
在这里插入图片描述
2、存储hash值
hash存储,一般可以用来存储一个完整的自定义对象(比如dto)。

//hmset是存储hash值的指令,
//user是当前hash的key
//name "zhangsan" age 23 sex "man" 是 key对应的值
127.0.0.1:6379> hmset user name "zhangsan" age 23 sex "man"
OK
//hmget获取hash中的某一个属性的值
127.0.0.1:6379> hmget user name
1) "zhangsan"
127.0.0.1:6379> hmget user age
1) "23"
//hgetall是获取hash中的所有属性对应的值
127.0.0.1:6379> hgetall user
1) "name"
2) "zhangsan"
3) "age"
4) "23"
5) "sex"
6) "man"

在这里插入图片描述
3、存储List列表(有序列表)

//lpush用来存储一个列表的命令。interesting是列表的名称,"basketball"列表中的值
127.0.0.1:6379> lpush interesting "basketball"
(integer) 1
127.0.0.1:6379> lpush interesting "football" "ball"
(integer) 3
//lrange输出列表中的数据的命令, interesting就是列表的名称 。 0 2是列表的开始输出索引和结束索引。
127.0.0.1:6379> lrange interesting 0 2
1) "ball"
2) "football"
3) "basketball"

在这里插入图片描述
4、存储Set集合(无序集合)

sadd key member //存数据
smembers key //取数据
案例:
127.0.0.1:6379> sadd strset "a" "b" "c"
(integer) 3
127.0.0.1:6379> smembers strset
1) "b"
2) "c"
3) "a"

在这里插入图片描述
5、存储zset集合(无序集合)

zadd key score member  (score是一个数字,zset就是通过这个数字进行排序,可以重复)
ZRANGEBYSCORE key 0 1000 //通过分数排序输出
ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD key 获取有序集合的成员数
ZSCORE key member 返回有序集中,成员的分数值
ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
ZRANK key member 返回有序集合中指定成员的索引
ZREM key member [member …] 移除有序集合中的一个或多个成员s
ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员 

在这里插入图片描述

发布/订阅者模式

两个客户端,一个是发布者、另一个是订阅者。发布者发布的消息,订阅者能收到。
Redis发布订阅架构

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel。
在这里插入图片描述
发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。

Redis发布订阅功能
1、订阅频道
Redis采用SUBSCRIBE命令订阅某个频道,其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道。
在这里插入图片描述
2、发布
Redis采用PUBLISH命令向指定频道发送消息,其返回值为接收到该消息的订阅者的数量。
在这里插入图片描述
3、在发布着向指定频道发布消息后,订阅该频道的订阅者就会收到消息
在这里插入图片描述
4、模式匹配
模式匹配功能允许客户端订阅符合某个模式的频道,Redis采用PSUBSCRIBE订阅符合某个模式所有频道,用“”表示模式,“”可以被任意值代替。
在这里插入图片描述
假设客户端同时订阅了某种模式和符合该模式的某个频道,那么发送给这个频道的消息将被客户端接收到两次,只不过这两条消息的类型不同,一个是message类型,一个是pmessage类型,但其内容相同。
5、 取消订阅
Redis采用UNSUBSCRIBE和PUNSUBSCRIBE命令取消订阅,其返回值与订阅类似。
由于Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,其返回值都包含了该客户端当前订阅的频道和模式的数量,当这个数量变为0时,该客户端会自动退出订阅状态。

Redis安全配置

config set requirepass 123456 //配置redis的密码
设置过密码后必须退出重新使用密码登录,否则无法执行任何操作!!
带密码登录:/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456 // -h表示主机IP,-p端口,-a密码
config get requirepass //查看密码
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/86619879