之前用了mysql在存储数据,作为持久性数据库,数据存储在硬盘中,频繁的读写,速率自然不高;
那自然就免不了接触到redis,作为一种Nosql数据库,Redis存储的数据是放在缓存中的,读取和写入速度大大加快了,尤其是数据关系简单的数据,Redis简直就是梦中情库。
下面就开始介绍下如何使用Redis。
推荐使用yum方式,简单快速,现在这年头,yum得用的欢,晚上才能不加班!
安装命令
yum install redis
启动redis
systemctl start redis.service
测试
redis-cli ping
看到pong就代表成功了
开机启动
systemctl enable redis.service
重启redis
systemctl restart redis.service
停止redis
systemctl stop redis.service
查看redis运行状态
systemctl status redis.service
这一套下来,Redis咣当一下就装好了。
yum安装之后的配置文件默认为/etc/redis.conf,原版的配置文件已经不要解释的太详细了,虽然都是英文,但是每个配置字段前面都有一大段描述,足够你去翻译了。
下面介绍稍微和安全有关的配置,因为尚未涉及性能的问题,后续会补充性能配置
生产环境的配置可以参考这个博客Redis配置详解(生产环境)
#默认情况下,redis不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为yes,默认为no, #如果是后台模式,将会写入pid文件/var/run/redis.pid daemonize no #指定redis只接收来自于该IP地址的请求,如果不进行设置,默认将处理所有请求 bind 127.0.0.1 # 指定redis监听端口,默认为6379 port 6379 # 配置密码,如果配置了这个密码,在执行其他查询操作之前,需要执行auth password # redis的查询速度是非常快的,外部用户一秒内可以尝试多大150K个密码;所以密码要尽量长 requirepass password
bind,可以限制允许谁来连接。
port,可以修改为一个不常见的端口,避免被人扫描到。
requirepass,可以做一个简单的登录验证。
解决了谁能连,从哪里连,暗号密码的问题,已经足够用了,想要再安全一点,那就把存储数据加密了。不过你这里能有什么有价值的数据呢?
为什么要用Redis,就是快,那么如何判断是否适合用redis就需要看你存储的数据类型,下面就简单介绍了一下这个,并且列举了场景,足够你判断使用redis还是mysql。
Redis比较重要的知识点就是数据结构,即适用于redis存储的数据类型,可以根据使用场景不同采用不同的存储数据类型
简单来说,
像简单的配置参数,一个名称一个值,一对一的这种,可以使用String字符串来存储
像多组参数或者数据,一个名称一些值,一对N的这种,建议使用Hash字典来存储
像多个字符串数据的集合,有序的采用列表,无序采用集合,分权重的采用有序集合
入门的时候,推荐使用命令行先来熟悉一下如何使用redis进行数据增删改查。
在shell中,我们使用redis-cli来连接redis服务器,默认会连接本地的127.0.0.1:6379
[root@localhost ~]# redis-cli 127.0.0.1:6379> auth password OK 127.0.0.1:6379>
来吧,新世界的大门已经打开了!准备好接受redis的冲击吧。
本次使用是用来统计ip的流量,原来使用的是mysql,现在准备利用redis代替mysql,原来在mysql中的定义为
ipaddr | upload | download |
---|---|---|
192.168.1.1 | 1 | 2 |
192.168.1.2 | 3 | 4 |
192.168.1.3 | 5 | 6 |
……
IP地址是固定的键值,也是名称,具备两个参数,上传和下载,这类数据的存储修改读取,建议使用Hash字典来进行替换mysql的表。
IP流量存储创建(归零)
127.0.0.1:6379> HMSET 192.168.32.202 upload 0 download 0 OK
查询某个IP是否存在
127.0.0.1:6379> EXISTS 192.168.32.202 (integer) 1 127.0.0.1:6379> EXISTS 192.168.32.204 (integer) 0
IP流量读取
127.0.0.1:6379> HGET 192.168.32.202 upload "0" 127.0.0.1:6379> HGET 192.168.32.202 download "0"
IP流量数据累加
127.0.0.1:6379> HINCRBY 192.168.32.202 upload 10 (integer) 10 127.0.0.1:6379> HGET 192.168.32.202 upload "10" 127.0.0.1:6379> HINCRBY 192.168.32.202 upload 10 (integer) 20 127.0.0.1:6379> HGET 192.168.32.202 upload "20"
IP设备记录删除
127.0.0.1:6379> DEL 192.168.32.202 (integer) 1 127.0.0.1:6379> EXISTS 192.168.32.202 (integer) 0
另外,如果IP地址要存储起来,这种一组相同格式的字符串数据,并且归属于同一个存储单元,也无需排序的,建议使用集合Set来存储。
新建IP记录
127.0.0.1:6379> SADD ALLIPS 192.168.32.202 (integer) 1 127.0.0.1:6379> SADD ALLIPS 192.168.32.203 (integer) 1 127.0.0.1:6379> SMEMBERS ALLIPS 1) "192.168.32.202" 2) "192.168.32.203"
查询某个IP在不在其中
127.0.0.1:6379> SISMEMBER ALLIPS 192.168.32.202 (integer) 1 127.0.0.1:6379> SISMEMBER ALLIPS 192.168.32.204 (integer) 0
简单的命令行使用基本介绍完了,其他的操作命令,可以在Redis使用教程中进行深度学习。
都说人配衣裳马配鞍,狗配铃铛跑的欢,数据存储选对方法才能运行的快。
下一章会将C语言环境下如何用redis存储数据,敬请期待。
今日小提示:
每天看看招聘信息,学习一下大家的招聘需求,是提升最快的方法