Redis初步使用笔记,昏头整理

Redis,非关系型数据库(键值Key-Value),目前在DB-Engines Ranking排名第八,是系统必备的中间件。Redis 作为内存数据库,其一大优势就是快。然后支持多种数据结构,支持单线程、多路复用、LUA 脚本、持久化、事务和主从复制。国内外好多互联网公司都在用Redis ,会使用Redis也成为了技术人员必备的技能。

非关系型数据库,NoSQL,主要分为以下几类:

  • 键值数据库:主要代表是Redis

  • 文档型数据库:主要代表是MongoDB

  • 列式数据库:主要代表是Hbase、Cassandra

  • 图数据库:主要代表是InfoGrid

对于非关系型数据库,本推文将带你学习键值数据库Redis。看完本推文后将掌握对Redis的初步使用。

图片

目录

一、Redis安装流程

1)在Windows上的安装

2)在Linux上的安装

3)容器上使用

4)编译redis.conf

二、Redis基本使用

1)性能压力测试

2)Redis启动

3)基本数据结构

4)事务操作

三、Redis的Python、Java连接


一、Redis安装流程

首先先来把Redis安装起来。

1)在Windows上的安装

Redis官方没有Windows版本的,但在Github上有。可以在Github上搜索了下载安装。

2)在Linux上的安装

首先要安装GCC编译器,gcc gcc-c++。(Redis是C语言开发的)

然后如果是Pacman,可以直接安装;如果是APT的,软件源有的话可以直接安装;如果是YUM的,软件源有的话如Centos8也可以直接安装。

# 主要代表是ArchLinux
pacman -S redis
# 主要代表是Ubuntu
apt-get install redis-server
# 主要代表是Centos8
yum install redis

如果软件源里没有,不能直接安装,则可通过源码编辑安装。

现在官网是5.0的版本(版本号第二位为奇数,为非稳定版本;第二为偶数,为稳定版本),从官网下载,解压编译进行安装。安装步骤如下:

# 官网下载
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 解压
tar -xzf redis-5.0.5.tar.gz -C /opt
# 进入redis目录
cd redis-5.0.5
# 编译redis.conf
vim redis.conf
# make编译,如果make有错误可make distclean后重新make编译
make

至此,完成以上步骤没有报错后,即可使用Redis了。安装完后别忘了设置Redis开机自启动。

3)容器上使用

如果是容器上使用的话,具体步骤如下:

# 拉取镜像
docker pull redis
# 运行容器
docker run --name redisLearn -d -p 6379:6379 redis

4)编译redis.conf

redis.conf大概的配置情况参考如下:

1 # Redis configuration file example.
2 #
3 # Note that in order to read the configuration file, Redis must be
......
69 bind 127.0.0.1   #绑定主机IP,默认值为127.0.0.1
......
88 protected-mode no   #保护模式
......
92 port 6379   #端口号
......
113 timeout 0   #客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
......
130 tcp-keepalive 300   #定时向client发送tcp_ack包来探测client是否存活
......
136 daemonize yes   #指定redis是否要用守护线程的方式启动。设置成yes时,开启守护进程模式,redis会一直在后台运行,除非手动kill该进程。设置成no时,断开连接会使redis进程退出
......
158 pidfile /var/run/redis_6379.pid   #pid默认写到/var/run/redis_6379.pid,可指定文件目录
......
170 # output for logging but daemonize, logs will be sent to /dev/null
171 logfile ""   #定日志文件的位置
......
218 save 900 1   #在15分钟内,如果1个key变化,就执行RDB
219 save 300 10   #在5分钟内,如果10个key变化,就执行RDB
220 save 60 10000   #在60秒内,如果1万个key变化,就执行RDB
......
235 stop-writes-on-bgsave-error yes   #后台备份进程出错时,主进程是否停止写入
......
241 rdbcompression yes   #是否压缩,如果压缩可以节约空间,会影响备份和恢复的性能
......
249 # tell the loading code to skip the check.
250 rdbchecksum yes   #是否校验rdb文件
251 
252 # The filename where to dump the DB
253 dbfilename dump.rdb   #设置 dump 的文件位置
......
507 # requirepass foobared
508 requirepass "654321"   #设置密码为654321
......

如果有没安装Redis的话,可以使用Redis在线测试网址进行学习 Try Redis

二、Redis基本使用

在Redis安装完毕后,可以进行快捷方式设置。

ln -s /opt/redis-5.0.5/src/redis-server /bin/redis-server
ln -s /opt/redis-5.0.5/src/redis-cli /bin/redis-cli

其次Redis的命令脚本如下所示:

执行的命令作用
redis-server启动redis
redis-cliredis命令行客户端
redis-benchmark基准测试工具
redis-check-aofAOF持久化文件检测和修复工具
redis-check-dumpRDB持久化文件检测和修复工具
redis-sentinel启动哨兵
redis-tribcluster集群构建工具

1)性能压力测试

使用redis-benchmark命令进行压力测试,具体命令如下:

# 对服务器性能进行监测,并发连接100个,请求10000个
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000
# 测试存取大小为100字节的数据包的性能
redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100
# 只测试set操作的性能
redis-benchmark -h 127.0.0.1 -p 6379 -t set,get -n 100000 -q
# 只测试某些数值存取的性能
redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -q script load "redis.call('set','foo','bar')"

2)Redis启动

Redis安装完毕后,使用redis-server命令启动服务器端。

然后使用redis-cli启动服务器端。如果有密码使用redis-cli -h 127.0.0.1 -p 6379 -a 654321(例如密码为654321)命令进行启动。

如果是容器上的,使用docker exec -it redisLearn redis-cli进行服务器端启动。

一个Redis实例,自带了16个命名空间互相隔离的数据库,可用redis-cli  -n 11(比如进入11)交互。

3)基本数据结构

Redis有五种数据类型,也可以说有六种。分别为:String、Hash、List、Set、Sorted Set(Zset)、HyperLogLog。

对于数据类型就不一一展开说了,但叙述下几个知识点:

  • 不应该在不清楚有多少key时使用keys *

  • String是二进制安全的,可包含任何数据,最大能存512M

  • 一个Hash可对应多个String

  • set命令可以新值覆盖旧值,如果不想覆盖可用set key value NX

  • 如果添加值有空格,使用双引号。set key "a b c"

  • 列表里元素可重复,集合里元素不可重复,也没有顺序

  • 集合中添加、查找、删除复杂度为O(1)

  • 如果集合里数据量极大,慎用smembers命令

  • ZSet每个元素都会关联一个double类型的分数,元素唯一分数可重复

4)事务操作

Redis开启事务使用multi命令,提交事务使用exec命令。举例如下:​​​​

127.0.0.1:6379> set count 1000
OK
127.0.0.1:6379> get ticket
"2"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby count 100
QUEUED
127.0.0.1:6379> decr ticket
QUEUED
127.0.0.1:6379> exec
1) (integer) 900
2) (integer) 1
127.0.0.1:6379> get ticket
"1"
127.0.0.1:6379> get count
"900"

一个事务中的命令要么全部执行,要么全部都不执行。

三、Redis的Python、Java连接

Python操作Redis使用第三方库“redis-py”,Java操作Redis可用Jedis、Redisson和redisTemplate。

1)使用Python连接操作

首先要安装库,pip3 install redis。之后代码示例如下:

import redis

client = redis.Redis(host='127.0.0.1')
client.set('user:001','张三',nx=True)
userName = client.get('user:001')
print(f'001的用户名为:{userName.decode()}')

2)使用Java连接操作

以Jedis为例,借助Maven把Jedis下载下来,pom.xml配置如下:

<dependencies>
   <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
   <dependency>
       <groupId>redis.clients</groupId>
       <artifactId>jedis</artifactId>
       <version>3.2.0</version>
   </dependency>
</dependencies>

之后代码示例如下:

public class redisLearn {
   public static void main(String[] args) {
       Jedis jedis = new Jedis("127.0.0.1", 6379);
       jedis.set("user:001", "张三");
       System.out.println("001的用户名为" + jedis.get("stu:001"));
       jedis.close();
  }
}

看完以上内容,多实际操作可掌握Redis的初步使用。对于Redis的学习还可参考如下网站:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值