redis使用基础篇

43 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天

作者按:怎么提高系统数据读写速度,除了提升内存、磁盘的硬件性能,软件方面有没有什么能够协助提升数据读写性能的呢,还真有,就是redis这一款非关系型数据库软件,具有极高的读写性能,今天就来研究下一下。

1、简介

redis是一款开源、使用c语言编写完成,基于内存可以持久化的高性能键值数据库。性能怎么个好法,读写速度分别为1100000、81000次每秒。数据类型也丰富,不止key-value,还有list、set、hash等数据结构,支持主从备份、支持将内存数据保存到磁盘。再来说说redis作者Salvatore Sanfilippo,意大利人,有艺术家的气息,人家确实也去从事艺术去了,从2020年开始,它就停止了他的程序员职业生涯,加入了作家的行列,现在全职写小说。他的第一部科幻小说wohpe意大利语版本今年7月15面世,英文版还没出来得等到今年冬天出版,主要讲人工智能、人类与技术的相互作用,有点期待。作者为什么不从事程序员,在他博客上他表明“现代编程正在变得复杂,无趣,充满了只需要粘合的层。它正在失去大部分的美丽。从这个意义上说,大多数编程不再是艺术,也不是高级工程(大多数在大公司和小公司编写的程序都是微不足道的:程序员只需要理解某些临时抽象,并编写一些逻辑和胶水代码)。只有极少数程序员面对编程的艺术面貌。只有极少数程序员在编程中面临高工程性。”读到这段话,自己确实有点同感,因为目前都是朝着编程拖拉拽搭积木的方向发展,人工智能的发展也会让很多人失去工作。

2、基础概念

在使用前,基本的数据结构得明白,比如一下几种:

(1)string字符串

(2)hash散列

(3)list列表

(4)set集合

(5)sorted set 有序集合

3、安装

软件地址redis.io

mac、windos平台的大家可以下载对应的包进入目录直接运行即可,也有相关的连接客户端大家可以用一下看看,这里着重介绍下linux环境下的安装。

(1)安装相关依赖

yum install -y gcc tcl

(2)上传redis源码包并解压

(3)进入目录编译,执行命令make、make install

(4)默认安装在/usr/local/bin目录,修改redis.conf文件,将bind修改为0.0.0.0这样就可以远程访问了,requirepass设置密码,其余的可以用默认配置

(5)启动 /usr/local/bin/redis-server /etc/redis.conf

(6)登录 redis-cli -h -p 6379

(7)验证心跳

(8)可以设置为systemd服务,即可开机自启

4、基本类型

(1)string的常见命令:set添加键值对、get根据key获取value、mset批量添加键值对,mget根据多个key获取多个value、strlen获得value的长度,其余命令的就得自己研究了

(2)hash是一个键值对集合,对应的数据结构有两种,ziplist压缩列表和hashtable哈希表,常见命令:hset key field value添加修改hash类型的filed的值、hget key field获取hash类型key的field的值,hmget批量获取多个hash值、hgetall获取一个hash类型key中所有的field和value。

(3)list列表:lpush key element 在列表左侧插入一个或多个元素、lpop key溢出并返回列表左侧的第一个元素、rpush key elment 在列表右侧插入一个或多个元素,rpop key移除并返回列表右侧的第一个元素,llen 获得列表长度。

(4)set集合:sadd key member 向集合添加一个或多个元素、srem key member移除set中的指定元素、smembers key 获取set中的所有元素

学会对应类型的增删改查,就基本能应付工作日常所需了。

5、springboot引入redis

(1)引入依赖,jedis是官方推荐的java连接开发工具,开发中要想使用好redis,必须对jedis熟悉。

redis.clients

jedis

(2)创建使用

Jedis jedis = new Jedis("localhost", 6379); //指定Redis服务ip端口

jedis.auth("xxxx"); //如果Redis服务连接需要密码

jedis.set(“key”,”hello cillian”)

String value = jedis.get("key"); //访问Redis服务

System.out.println(key);

jedis.close(); //使用完关闭连接

(3)Jedis连接池

public class Demo {

private static JedisPool jedisPool = null;

static {

//配置连接池

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

jedisPoolConfig.setMaxTotal(8);

jedisPoolConfig.setMaxIdle(8);

jedisPoolConfig.setMinIdle(0);

jedisPoolConfig.setMaxWaitMillis(200);

//创建连接池对象

jedisPool = new JedisPool(jedisPoolConfig,"127.0.0.1",6379,1000,"132537");

}

public static Jedis getJedis(){

return jedisPool.getResource();

}

}

到这里,对于redis的基础应该有一个大致了解,快去实践吧,祝学习顺利!