对于Redis而言,相信大家都已经耳熟能详,今天也就来学习如何安装及基础知识的学习
安装
暂时我接手的实验室项目就是搭载在linux云服务器上,采用Redis来减轻服务器压力做具体的实现功能。下面来具体介绍一下:
Redis的安装分为Windows下和linux下的安装, 当然,在平时的企业级开发过程中,Linux还是用的比较多,对于不同的Linux版本而言安装的方式也不尽相同,这里我安装在我的云服务器上(centos 7) 。对于 Windows安装而言,只需要提供对于的安装包,或者是再来安装一个 RDM(Redis Desktop Manager)。
Windows
有需要的自己取就行,如何使用 在官网上也都有详细的介绍。这里不再赘述。
链接:https://pan.baidu.com/s/1T8fDfGqfzzSmh1t9JR3LdA
提取码:l105
Linux
对于Linux下的安装而言,这里我使用云服务器的 Centos 7
注: 对于学习过docker的小伙伴来说,使用doucker进行安装会更加的方便。本人暂时还没学习docker,就先用着最基础的安装方法来着先……
- 先去Redis的官网上 “http://redis.io” 上下载所需要的版本,这里下载
redis-5.0.7
最新版本得到一个redis-5.0.7.tar.gz
然后传到 Linux下的/opt
目录下,对于目录的选择这里是不指定的,但是对于规则的友好性而言,放在 opt目录下是最好的选择。 - 首先对于 Redis 是基于C语言进行编写,所以在安装之前先安装gcc
yum -y install gcc automake autoconf libtool make
注: 若在安装的过程中出现 /var/run/yum.pid 已被锁定,PID 为XXX的另一个程序正在运行
,只需要执行即可
rm -f /var/run/yum.pid
- 安装redis,在之前已经上传完成,然后进入到相对应的目录,我们是放在
/opt
下, 输入以下命令,进行解压缩
pwd /opt
tar zxvf redis-5.0.7.tar.gz
- 完成解压缩以后,进入到对应的目录,进行编译,出现如下图表示以上操作是成功的
cd redis-5.0.7
make MALLOC=libc
make PREFIX=/usr/local/redis install
- 此时进入到相对应的目录下面启动redis服务端即可
cd /usr/local/redis
cd bin
6. 在启动完成以后,使用ctr + c
终止掉。进入/opt 目录下面,将 reids.conf
拷贝到安装的同级目录,也就是 /usr/local/redis
下,如下所示:
cd /opt
cp reids.conf /usr/local/redis
[root@yin redis]# ll
total 68
drwxr-xr-x 2 root root 4096 Jan 9 11:02 bin
-rw-r--r-- 1 root root 61797 Jan 9 11:05 redis.conf
- 完成以后,就可以来使用PING语句检查自己配置的是否正确:
[root@yin ~]# cd /usr/local/redis
[root@yin redis]# ll
total 4
drwxr-xr-x 2 root root 4096 Jan 9 10:58 bin
[root@yin redis]# ./bin/redis-cli
127.0.0.1:6379> ping
PONG
可能暂时还没有看完就还没有看到最后 最后可能还需要在运行的时候
./redis-server /usr/local/redis.redis.conf 这样才能让下面的的配置起到作用
基础讲解
基础配置
-
daemonize: 默认配置为no,表示不启用
守护进程
注: 什么是守护线程,守护线程就是说在开启之后就会一直占用控制台,不能够像Tomcat那样,还能够进行输入,所以可以将其设置成 yes,表示启用守护进程 -
port: 6379 表示默认端口号 6379
-
bind : 绑定IP地址默认为 127.0.0.1,默认只有本机能够访问。
-
databases : 数据库数量,默认是16
-
持久化,对于我们的redis而言,会将数据持久化到硬盘上面,但是不能来一个key值就进行持久化,需要设置相对应的持久化更改时间和key值:
save 900 1
# 表示900s 有一个更改
save 300 10
# 表示300s 有十个更改
save 60 10000
# 表示60s 有10000个更改 -
dbfilename : 指定本地数据库的文件名。默认为 dump.rdb
-
requirepass: 设置密码,进行连接时候需要输入特定的密码进行连接。
./bin/redis-cli -h host -p port -a password
redis的关闭
非正常关闭:
ps -ef | grep -i redis
kill -9 PID
正常关闭:
./bin/redis-cli shutdown
实例:
[root@yin bin]# ps -ef | grep -i redis
显示既有客户端又有服务端
root 9805 1 0 Jan10 ? 00:08:46 ./bin/redis-server *:6379
root 19357 19328 0 16:59 pts/1 00:00:00 ./redis-cli -a sun
root 19377 19295 0 17:07 pts/0 00:00:00 grep --color=auto -i redis
进行关闭
127.0.0.1:6379> shutdown
not connected>
关闭以后 就会只显示客户端
[root@yin bin]# ps -ef | grep -i redis
root 19357 19328 0 16:59 pts/1 00:00:00 ./redis-cli -a sun
root 19381 19295 0 17:07 pts/0 00:00:00 grep --color=auto -i redis
redis的多数据库
- move key db
- flashdb
- flashall
- 26
redis的常用命令
redis命令用于在redis服务上执行操作
DEL key [key ...] 表示一种规范,中括号里面表示的是可有可无的。
DUMP key 表示查看序列化的值
Exists key 表示判断key是否存在
Expire key seconds 表示为给定的key设置过期的时间。
ttl key 表示查看key的生存时间。
persist key 表示将其设置成永久保存
random key 表示随机选取一个key出来
RENAME key newkey 表示重命名
MOVE key db 表示将某一个key移动到某个数据库中
实用:
EXPIRE key seconds
- 限时的优惠活动信息。
- 网站的数据缓存(用于一些需要定时更新的数据,例如,积分排行榜)
- 手机在登录时候需要的验证码信息。
- 限制网站的登录访问频率
Keys 的命名规范
- 单个Keys 存入512大小
- key不要太长,尽量内存不要超过1024个字节,这样不仅会消耗内存,而且会降低查询的效率。
- key 也不要太短,太短的话,可读性会降低
- 在一个项目中,key最好使用统一的命名模式,例如 user:123: password
数据类型学习:
String
简介: String是二进制安全的,意思是redis的String类型可以包含任何数据。比如jpg图片或者序列化的对象,也是最为基本的数据类型,一个键最大能够存储512MB,一个键最大为1024字节
常用命令
-
set key_name value
-
setnx key_name value //在key值不存在时候进行设置,存在时候无法使用此命令。分布式锁用到此命令
-
get key_name
-
getrange key_name start end
-
strlen key_name 用来查看value的值的长度
-
incr key_name 表示对value的值进行加一(首先确定的是value必须是整形,若是之前的key不存在,那么之前的key值会被赋值为0,然后再进行incr操作)举例:在
-
incrby key_name num 表示对某个key进行增加时候增加多少。
-
decr 进行减一操作 原理同 incr 是一样的
-
decrby 同上
常用场景
- String通常用于保存单个字符串或者是JSON字符串类型。
- 因为String是二进制安全的所以完全可以把一个图片文件的内容作为字符串来存储。
- 计算器进行使用,使用到 incr 和 decr 来对微博数,粉丝数等进行增和减
- incr等指令本身就具有原子操作的特性。
Hash
简介: 是一个String类型的field 和value映射表,适用于存储对象,Redis中的一个hash可以存放 40多亿个键值对。可以看成是具有Key和Value的Map容器,占用比较少的磁盘空间。
常用命令
- hset key field value
- hset key field
- hmset key field value [field value…]
- hmget key field [field ……]
- hkeys key
- hlen key
- hincrby key field
- hdel key field
- hsetnx (如果不存在时候 )
- hexists key field
应用场景
- 常用于存储一个对象。
- Redis 的Hash实际是内部存储的de1Value为一个HashMap,并提供了直接存取这个Map成员的接口
List
简介: List列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多包含40多亿个元素。
基础命令
- LPUSH key value1 [value2……] //将一个或多个值添加到列表头部(从