超详细的Redis入门教程

​目录: redis简介 Linux环境安装redis redis的数据类型和常用命令 redis多数据库 redis数据的持久化 redis的事务 Redis主从复制(读写分离)、主从切换(一主二从三哨兵) redis发布订阅 redis单线程模型 redis批量执行命令 redis禁用或重...
摘要由CSDN通过智能技术生成

​目录:

  • redis简介
  • Linux环境安装redis
  • redis的数据类型和常用命令
  • redis多数据库
  • redis数据的持久化
  • redis的事务
  • Redis主从复制(读写分离)、主从切换(一主二从三哨兵)
  • redis发布订阅
  • redis单线程模型
  • redis批量执行命令
  • redis禁用或重命名危险

一、Redis简介

官网:https://redis.io/

1、什么是Redis?

    Redis是一个完全开源免费的、遵守BSD协议的、高性能的key-value存储系统。它既可基于内存作为高性能缓存,也可将数据持久化到磁盘,是目前最热门的NoSql数据库之一。

    了解:BSD协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

2、我们为什么要使用Redis?

(1).缓存数据,减少对数据库的访问次数,提高响应速度;

(2).性能极高,Redis读取速度可达110000次/s,写速度可达81000次/s ;

(3).支持数据的持久化;   

(3).支持丰富的数据结构:String(字符串)、Hash(散列)、List(列表)、Set(集合)以及zset(Sorted Set:有序集合);

......

3、Redis与Memcache的比较

 

Memcache

Redis

持久性

不支持持久化

支持将数据持久化到磁盘

灾难恢复

宕机后数据消失不可恢复

数据可恢复

支持的数据结构

简单的k/v类型

Hash、List、Set、zset等

虚拟内存

memcache所有数据全部一直存储

在内存中,存储的数据量不能超过

内存的大小。

虚拟内存:Redis会将暂时不常用的Values从

内存交换到磁盘中,在内存中只保留Keys的

数据,当这些被换出的Values需要被读取时,

Redis则将其再次读回到主内存中。

并发

Memcache支持多线程,通过CAS

实现线程安全保证数据的一致性;

Redis是单线程的,且Redis支持事务;

......

   

总结:Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存。有持久化需求或者对数据结构的处理有高级要求的应用,选择redis。简单的key/value存储,可以选择memcache。

4、Redis的使用场景

> 缓存热数据

> 计数器

> Redis 作分布式锁

> 最新列表

    例如要展示最新新闻列表,如果总数量很大的情况下,尽量不要使用select a from A limit 10这种low操作,尝试redis的 LPUSH命令构建List。

> 排行榜

    可以使用sorted set(有序集)来构建,命令:ZADD。

二、Linux安装Redis

(1)、安装gcc

gcc:linux系统编译器,如果没有安装,在执行make命令时会报Command not found;

>执行如下命令用来查看是否已安装gcc

# gcc -v

出现如下信息表示已安装:gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

>否则,执行如下命令,先安装gcc

# yum install gcc-c++

(2)、安装tcl(非必须,如果不需要测试Redis也可以不安装)

tcl:tcl是一种脚本语言,而Redis的测试用例是tcl脚本,安装后如果需要测试Redis,我们就需要安装tcl解释器,否则在步骤(4)执行make test时会报:You need 'tclsh8.5' in order to run the Redis test。

执行如下命令安装tcl:

# cd /usr/local

# mkdir tcl

# cd tcl

# wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz

# tar -zxvf tcl8.6.3-src.tar.gz

# cd tcl8.6.3/unix/

# ./configure

# make

# make install

(3)、安装Redis

# cd /usr/local

# mkdir redis

# cd redis

# wget http://download.redis.io/releases/redis-4.0.10.tar.gz

# tar -zxvf redis-4.0.10.tar.gz

# cd redis-4.0.10

# make

# make PREFIX=/usr/local/redis install

其中PREFIX=/usr/local/redis可以省略,省略redis默认会安装到/usr/local/bin目录下。

(4)、测试Redis

# cd src

# make test

通过以上命令就可以对redis进行测试。返回"\o/ All tests passed without errors!"表示所有测试都没有错误。

(5)初步配置redis

# cd /usr/local/redis/redis-4.0.10

# vi redis.conf

修改redis配置文件中的下面两个属性:

> daemonize no ——> daemonize yes

    配置redis作为守护进程运行。daemonize 设置为no时,退出或关闭终端都会导致redis进程退出;而设置为yes redis会在后台一直运行。

    另外还有一个属性:pidfile /var/run/redis_6379.pid,表示当redis服务以守护进程方式运行时,redis默认会把pid(进程Id)写入/var/run/redis_6379.pid,服务运行时该文件就存在,服务一旦停止该文件就自动删除。

> timeout 0 ——> timeout 600

    表示客户端闲置多长时间关闭连接;

    redis的配置参数很多,此处只修改两项最基本的配置,其他后面会涉及到的配置我们在后面会讲,剩余配置大家可自行了解。

(6)、设置redis开机自启动

# vi /etc/init.d/redis

init.d目录下原本不存在redis文件,执行vi /etc/init.d/redis时会新建redis文件;

> 找到redis启动脚本

# find / -name 'redis_init_script '

启动脚本所在路径:/usr/local/redis/redis-4.0.10/utils/redis_init_script

> 拷贝启动脚本文件

#cp /usr/local/redis/redis-4.0.10/utils/redis_init_script   /etc/init.d/redis

> 修改redis文件

# vi /etc/init.d/redis

> 修改以下4处为自己的安装路径,保存

EXEC=/usr/local/redis/redis-4.0.10/src/redis-server

CLIEXEC=/usr/local/redis/redis-4.0.10/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF="/usr/local/redis/redis-4.0.10/redis.conf"

> 设置权限

# chmod 777 /etc/init.d/redis

> 设置开机自启动【此处的redis就代表之前init.d下的redis】

# chkconfig redis on

(7)、启动或关闭redis服务

# service redis start

# service redis stop

(8)、使用redis,简单示例如下【退出redis客户端命令:quit】

[root@JD /]# ./usr/local/redis/redis-4.0.10/src/redis-cli

127.0.0.1:6379> set felixRedis:username yuanlong

OK

127.0.0.1:6379> set felixRedis:password 111111

OK

127.0.0.1:6379> get felixRedis:username

"yuanlong"

127.0.0.1:6379> get felixRedis:password

"111111"

127.0.0.1:6379> quit

[root@JD /]#

三、Redis数据类型和常用命令

> Redis目前支持5种数据类型,分别是:

String(字符串)

Hash(散列)

List(列表)

Set(集合)

Sorted Set(zSet:有序集合)

下面分别介绍五种数据类型及相应的操作命令,Redis总共有14个命令组200多个命令。另外注意Redis的命令不区分大小写,但是key严格区分大小写。

>>> String(字符串):Value最大值为512M

命令

描述

set key value

设值,若给定的Key已经存在,则被覆盖

setnx key value

若给定的key不存在,执行set操作,返回1;

若给定的Key已经存在,不做任何操作,返回0;

get key

获值

mset key value[key value ...]

同时设置一个或多个Key-Value键值对,如

果某个给定key已经存在,那么MSET新值

会覆盖旧值,mset是原子操作,所有Key都

会在同一时间被设置

msetnx key value[key value ...]

同mset,但是仅当所有key都不存在时

才会进行set操作

mg

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值