2019年04月14日
阅读: 3000
Ubuntu下Redis安装和常用操作
友情提醒:本文最后更新于 2078 天前,文中所描述的信息可能已发生改变,请谨慎使用。
以下安装操作是在Ubuntu16.04系统下完成,其他发行版本或者类Unix系统可能稍有不同。(Redis有编号0~15共16个数据库。)
一、Redis基础知识介绍
redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化。
1. Redis有5种数据类型:
- string,最基本的数据类型,也是其他四种数据类型的基础,能存储任何形式的字符创。适用:存储信息对象序列化JSON格式。get/set操作。
- hash,哈希类型是一个字符串类型的字段和字段值的映射表,将一个对象存成hash类型占用更少的内存,并且可以更方便的存取整个对象。适用:经常被并发请求的小数据查询,如:最近五日的超高返商品数据,存储在Hash中,field=商品ID,value=商品信息(对象序列化JSON格式)。hmset/hgetall操作。
- list,链表类型可以存储一个有序的字符串列表,用链表类型的LPUSH和LPOP或者RPUSH和RPOP实现栈的功能,用LPUSH和RPOP或者RPUSH和LPOP实现队列的功能。适用:作为信息队列使用,不断的Lpush数据到List中,rpop数据出来入库,或者处理。列表的最大长度为 232 - 1 个元素(4294967295,每个列表的元素超过四十亿)。lpush list_name list_element/ lrange list_name start_index end_index
- set,集合类型。集合元素是唯一的,无序的。集合间可以进行交并差操作。sadd/smembers
- zset,有序集合类型,在set的基础上多了一个有序。适用:搜索关键字排名。zadd/zrangebyscore
2. Redis的优点:
- 异常快速 : Redis是非常快的,每秒可以执行大约110000设置操作,81000个/每秒的读取操作。
- 支持丰富的数据类型 : Redis支持最大多数开发人员已经知道如列表,集合,可排序集合,哈希等数据类型。这使得在应用中很容易解决的各种问题,因为我们知道哪些问题处理使用哪种数据类型更好解决。
- 支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
- 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。 操作都是原子的 : 所有 Redis 的操作都是原子,从而确保当两个客户同时访问 Redis 服务器得到的是更新后的值(最新值)。
3. Redis的缺点:
- Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒
- Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。
二、Redis安装
1. 准备工作
- 更新系统的依赖环境
sudo apt-get update
sudo apt-get upgrade
- 安装Redis
sudo apt-get install redis-server
# 如果需要安装成服务的话执行
sudo systemctl enable redis-server.service
# 确认安装的版本
redis-server -v
2. 启动和停止
默认情况下直接在终端输入redis-server
即可临时性启动Redis服务,再新开终端输入redis-cli
启动客户端连接。
redis-server & # 启动服务
redis-cli # 启动客户端
redis-cli shutdown # 关闭服务
如果出现以上命令无法关闭redis-server
的情况下解决办法如下:
* 使用以下命令启动重启和关闭
/etc/init.d/redis-server stop # 停止
/etc/init.d/redis-server start # 启动
/etc/init.d/redis-server restart # 重启
- 我的安装情况是默认安装后保护模式和后台启动模式均为开启状态,根据需要配置为关闭。
3. 查看进程状态以及强制停止
ps -aux | grep redis-server
sudo pkill <pid>
4. 连接测试
直接输入redis-cli
通过默认客户端来测试连接,正常情况下返回ping
的对应值PONG
。
$ redis-cli
$ 127.0.0.1:6379> ping
PONG
$ 127.0.0.1:6379>
5. 简单配置
通过编辑默认配置文件来初步简单配置,推荐copy
并重命名配置文件。
sudo vim /etc/redis/redis.conf
打开远程连接并关闭保护模式,否则只允许本地连接:
# 把以下注释掉(前面加#)
bind 127.0.0.1 ::1
# 以下改为 yes → no
protected-mode no
# 如果需要,设置验证密码
requirepass <YOURPASSWORD>
以上设置也可以通过客户端设置:
redis 127.0.0.1:6379> CONFIG SET requirepass <YOURPASSWORD>
OK
redis 127.0.0.1:6379> AUTH <YOURPASSWORD>
Ok
设置密码后的连接方式:
redis-cli -h 127.0.0.1 -p 6379 -a <YOURPASSWORD> # 其他参数如未改动则可省略
保存后重启服务:
sudo service redis-server restart
6. 常用命令 ☞ 通用key-value操作
keys pattern
查询相应的key,pattern表示查询条件,可以实现模糊查询,* 通配任意多个字符,keys * 表示返回当前redis数据库中所有的key;? 通配任意一个字符,比如已经有两个key,分别是aba或abb,如果要查询以ab开头的后面只有一个字符的key,就可以使用keys ab?命令查询。 [], 通配[]内的某一个字符,比如说,我们只知道key是以ab开头,但是后面一位是什么记不清了,只知道可能是a,b,e,d中的一个,那么就可以通过命令keys ab[abed]进行查询。
127.0.0.1:6379> keys ab[abcd]
1) "abb"
2) "aba"
127.0.0.1:6379>
del key1 key2 ... keyn
删除一个或多个key,如果这个key不存在会忽略掉,返回值是删掉的key的数量。rename key newkey
重命名key,需要注意的是,如果newkey已经存在,那么newkey会覆盖掉已有的key。 因此在执行这个名字之前,最好先执行以下exists key看到newkey是否已经存在。exists key
判断key是否存在,0不存在,1存在。renamenx key newkey
这个命令的意思是,当newkey不存在的时候,则改名,返回1,否则不改名,返回0。type key
查看key的类型,可能的类型有string、link、set、order set、hash。randomkey
这个命令可以在当前Redis数据库的所有key中,随机返回1个。ttl key
查询key的生命周期,如果key不存在返回-2(好像2.8以前返回-1),如果key永久有效返回-1,否则返回这个key的有效期秒数。expire key 秒数
设置一个key的有效期,比如expire aba 10,那么10秒钟之后,这个key将消失。persist key
如果aba这个key还未消失之前,想将其设置回永久有效,则可使用这个命令。select dbIndex
默认16个数据库:0-15,进入redis后默认是0库。不建议使用多个数据库flushdb / flushall
用于清除数据库,flushdb只清除当前数据库,flushall清除所有数据库。- 更多命令请参考:https://segmentfault.com/a/1190000010999677
相关链接:
https://www.jianshu.com/p/0ae66fc9da56
https://blog.csdn.net/Architect_CSDN/article/details/80898589
https://segmentfault.com/a/1190000010999677
https://lyonyang.github.io/blogs/06-Cache/01-Redis/