此次我们实现的是在远程服务器上安装redis并在Java项目中简单的使用
简介
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
安装
- 首先在连接远程服务器,选择版本安装
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
- 解压:
tar -zxvf redis-5.0.7.tar.gz
-
解压完成后出现文件夹:redis-5.0.7,进入到该目录中: cd redis-5.0.7
-
在 redis-5.0.7 目录下执行 make 命令进行编译
-
如果 make 完成后继续执行 make install 进行安装
OK,到这里就算安装成功了
配置redis.conf文件
- 将里面的 daemonize no 改成 yes,让服务在后台启动,如下:
daemonize yes
2.修改redis配置文件将 bind 127.0.0.1 注销,这个一定要注释掉或者改为0.0.0.0,不然它只能本地服务器才能连接成功
bind 0.0.0.0
或
#bind 127.0.0.1
- 修改protected-mode 改为 no,默认配置是yes
protected-mode no
检查服务器防火墙
检查服务器防火墙是否开放6379端口:
#执行下面代码 如果返回yes 就代表开启了 返回no 就代表没有
firewall-cmd --query-port=6379/tcp
#如果上面返回no 执行下面的这个代码,开通端口
#如果是yes,可以不用执行略过
firewall-cmd --zone=public --add-port=6379/tcp --permanent
#然后重启防火请
firewall-cmd --reload
后端
Python使用
下载:
pip install redis
实例
import redis # 导入redis 模块
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'runoob') # 设置 name 对应的值
print(r['name'])
print(r.get('name')) # 取出键 name 对应的值
print(type(r.get('name'))) # 查看类型
结果:
runoob
runoob
<class 'str'>
String操作
set
#在Redis中设置值,默认不存在则创建,存在则修改
r.set('name', 'zhangsan')
'''参数:
set(name, value, ex=None, px=None, nx=False, xx=False)
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name, value)
xx,如果设置为True,则只有name存在时,当前set操作才执行
```
setex(name, value, time)
#设置过期时间(秒)
psetex(name, time_ms, value)
#设置过期时间(豪秒)
#批量设置值
r.mset(name1='zhangsan', name2='lisi')
#或
r.mset({"name1":'zhangsan', "name2":'lisi'})
get
#取值
get(name)
## 批量获取
print(r.mget("name1","name2"))
#或
li=["name1","name2"]
print(r.mget(li))
exists(name)
判断是否存在key,返回值为0或1
print(r.exists('name'))