今天咱来聊一下Redis五种数据类型的详细用法以及在代码中如何使用。废话不多说,开始!

Redis五种数据类型:

  1. string:字符串对象
  2. list:列表对象
  3. hash:散列
  4. set:集合
  5. zset:有序集合

接下来一一进行操作(命令行操作,由于很多,就不一一截图了):

一、统一操作(五种数据类型都拥有,针对key)

我给定一个key:k1

//获取所有key
keys *
//删除k1
DEL k1
//检查给定的k1是否存在
EXISTS k1
//给k1设置1秒的过期时间,1秒过后,k1被删除
EXPIRE k1
//给k1设置过期时间为unix时间戳,也就是北京时间2019-11-29 22:22:09
EXPIREAT k1
//查看k1还有多长时间过期,单位为毫秒
PTTL k1
//查看k1还有多长时间过期,单位为秒
TTL k1
//取消k1的过期时间设置
PERSIST k1
//修改key的名称,将k1修改为k2
RENAME k1 k2
//查看k1是什么数据类型的
TYPE K1

二、string(字符串对象)

//设置k1的值为value1
set k1 value1
//获取k1的值
get k1
//先获取k1的值,然后再将k1的值设为k1_value
GetSet k1 k1_value
//同时设置多个key的值,k1的值为v1,k2的值为v2
mset k1 v1 k2 v2
//同时获取k1,k2的值
mget k1 k2
//将k1的值加1
incr k1
//将k1的值加上3
incrby k1
//将k1的值减1
decr k1
//将k1的值减3
decrby k1
//在k1的值后面添加相应的字符串
append k1 value

三、list(列表对象)

从左到右索引为0,1,2...

//将v1,v2,v3添加到列表k1
LPUSH k1 v1 v2 v3
//获取列表k1中索引为1的值,索引从0算起
LINDEX k1
//获取列表k1的元素个数
LLEN k1
//移除并获取k1的第一个元素
LPOP k1
//获取索引0~2的元素,当2改成-1,则获取所有元素
LRANGE k1
//设置索引为1的元素值为v4
LSET k1 v4
//移除并获取列表k1的最后一个元素
RPOP k1
//在列表k1尾部添加v5和v6两个元素
RPUSH k1 v5 v6

四、hash(散列对象)

散列对象相当于字典(map)

//给h_k1添加一个键为k1,值为v1的entry
HSET h_k1 k1 v1
//获取h_k1中k1的值
HGET h_k1 k1
//删除h_k1中的k1,可以删除多个,key之间空格隔开
HDEL h_k1 k1
//获取h_k1中k1的值
HGET h_k1 k1
//给h_k1添加<k2,v2>,<k3,v3>的entry
HMSET h_k1 k2 v2 k3 v3
//同时获取h_k1中k2,k3的值
HMGET h_k1 k2 k3
//获取h_k1中的所有键对值
HGETALL h_k1
//获取h_k1中的键对值数量
HLEN h_k1
//获取h_k1中所有的key
HKEYS h_k1
//获取h_k1中所有的value
HVALS h_k1
//查看h_k1中key为k2的entry是否存在
HEXISTS h_k1 k2

五、set(集合)

集合中的元素是唯一的,类似于java中的set集合

//往s_k1集合中添加v1,v2,v3,v4
SADD s_k1 v1 v2 v3 v4
//获取s_k1集合成员数量
SCARD s_k
//获取s_k1中的所有成员
SMEMBERS s_k1
//移除并返回s_k1中随机一个数
SPOP s_k1
//给s_k1,s_k2做交集
SINTER s_k1 s_k2
//给s_k1,s_k2做交集并且将结果存储到s_k3
SINTERSTORE s_k3 s_k1 s_k2
//给s_k1,s_k2做并集
SUNION s_k1 s_k2
//给s_k1,s_k2做并集并且将结果存储到s_k4
SUNIONSTORE s_k4 s_k1 s_k2

六、zset(有序集合)

//给z_k1添加三个元素v1、v2、v3,分值分别是1、2、3
ZADD z_k1 v1 v2 v3
//获取z_k1的元素个数
ZCARD z_k1
//获取分值为1~3的成员数
ZCOUNT z_k1
//获取索引 0~2的成员,2改成-1为获取所有成员
ZRANGE z_k1
//获取索引 0~2的成员以及其分值
ZRANGE z_k1 withscores
//获取分值为0~2的成员,后面也可以带上withscores
ZRANGEBYSCORE z_k1
//获取v2的索引
ZRANK z_k1 v2
//获取z_k1中v1的分值
ZSCORE z_k1 v1
//对z_k1和z_k2做交集,中间的2表示对两个有序集合做交集,并将结果存在z_k3
ZINTERSTORE z_k3 z_k1 z_k2
//对z_k1和z_k2做并集,中间的2表示对两个有序集合做并集,并将结果存在z_k4
ZUNIONSTORE z_k4 z_k1 z_k2

命令行的常规操作如上,接下来看一下代码(分为普通maven项目和 spring boot项目)如何操作。

一、普通maven项目

(1)操作单机redis(一般使用jedis连接,需要导入jedis的jar包)

连接方式

连接之后就可以直接用返回的jedis操作api,相应的IDEA都会有提示,这里就不在赘述。

(2)连接集群方式

连接无密码集群:

连接有密码集群:

二、springboot上操作redis

首先得在pom文件中添加依赖:

(1)单机版

spring-data-redis提供了一种代码配置(需要利用@Configuration注解创建一个配置类)的方式可获取RedisTemplate

配置之后就可用直接用@Autowired注解注入进行使用。

也可通过配置文件(application.properties)配置redis信息进行连接

通过配置文件可以直接在代码中通过注解注入的方式使用

@Autowired
StringRedisTemplate stringRedisTemplate;
//自定义初始化之后执行的方法
@PostConstruct
public void run() throws Exception {
ValueOperations<String, String> stringStringValueOperations = redisTemplate.opsForValue();
stringStringValueOperations.set("k1","v1");
System.out.println(stringStringValueOperations.get("k1"));
}

(2)集群连接方式

配置文件

#数据库
spring.redis.database=
spring.redis.password=
#设置为0可以让master挂机后,直接切换到slave
spring.redis.cluster.max-redirects=
spring.redis.cluster.nodes=192.168.197.100:,192.168.197.110:,192.168.197.120:,192.168.197.100:,192.168.197.110:,192.168.197.120:
spring.redis.jedis.pool.max-wait=
spring.redis.jedis.pool.max-active=
spring.redis.jedis.pool.max-idle=
spring.redis.jedis.pool.min-idle=

配置类:

package com.liusy.zuul.com;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Configuration
public class redisConfig {
//获取配置文件里的值
@Value("${spring.redis.password}")
String password;
@Value("${spring.redis.cluster.nodes}")
String nodes;
@Value("${spring.redis.cluster.max-redirects}")
String redirects;
@Value("${spring.redis.jedis.pool.max-wait}")
String maxWritTime;
@Value("${spring.redis.jedis.pool.max-active}")
String maxActive;
@Value("${spring.redis.jedis.pool.max-idle}")
String maxIdle;
@Value("${spring.redis.jedis.pool.min-idle}")
String minIdle;
@Bean
public RedisTemplate redisTemplate() {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(getConnectionFactory());
return redisTemplate;
}
@Bean
public RedisConnectionFactory getConnectionFactory() {
List<String> nodelist = new ArrayList<>();
nodelist = Arrays.asList(nodes.split(","));
RedisClusterConfiguration config = new RedisClusterConfiguration(nodelist);
config.setPassword(RedisPassword.of(password));
config.setMaxRedirects(Integer.parseInt(redirects));
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(config);
connectionFactory.afterPropertiesSet();
return connectionFactory;
}
@Bean
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(Integer.valueOf(maxActive));
jedisPoolConfig.setMaxWaitMillis(Integer.valueOf(maxWritTime));
jedisPoolConfig.setMaxIdle(Integer.valueOf(maxIdle));
jedisPoolConfig.setMinIdle(Integer.valueOf(minIdle));
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig.setTestOnBorrow(true);
// 在空闲时检查有效性, 默认false
jedisPoolConfig.setTestWhileIdle(false);
return jedisPoolConfig;
}
}

springboot启动之后直接用@Autowired注解注入RedisTemplate使用就可以了

以上就是redis的使用,全文比较粗糙,展开就会很长。下篇将聊一下Redis底层数据结构的实现。

=======================================================

我是Liusy,一个喜欢健身的程序员。

欢迎关注公众号【Liusy01】,一起交流Java技术及健身,获取更多干货。

Redis详细使用及结合SpringBoot的更多相关文章

  1. redis详细配置文件

    redis 单机版自己指定配置 #修改为守护模式 daemonize yes #设置进程锁文件 pidfile /usr/local/redis/redis.pid #端口 port 6379 #客户 ...

  2. [原]Redis详细配置介绍

    Redis详细配置介绍 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 ...

  3. Redis详细用法

    Redis详细用法 1.redis启动命令 本机Redis 安装路径是在usr/local/redis 目录下 启动命令: ./redis-server redis.conf(启动时指定配置文件) 测 ...

  4. Windows 64位下安装Redis详细教程

    方法/步骤 在D盘新建文件夹[redis],右键解压Redis ZIP包,把所有文件解压到redis文件夹中.(其他盘符也可以滴^_^) 文件介绍: redis-benchmark.exe       ...

  5. PHP 操作redis 详细讲解转的

    http://www.cnblogs.com/jackluo/p/3412670.html phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有 ...

  6. Redis详细讲解(Redis原理,Redis安装,Redis配置,Redis使用,Redis命令)

    一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发 ...

  7. PHP操作redis详细讲解(转)

    PHP中redis的使用   redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和z ...

  8. PHP 操作redis 详细讲解 转的 http://www.cnblogs.com/jackluo/p/3412670.html

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...

  9. CentOS安装Redis详细教程

    构建 Redis redis 目前没有官方 RPM 安装包,我们需要从源代码编译,而为了要编译就需要安装 Make 和 GCC. 如果没有安装过 GCC 和 Make,那么就使用 yum 安装. yu ...

随机推荐

  1. “程序包com.sun.org.apache.xml.internal.security.utils不存在”的问题

    方法一(eclipse): 网上大神的回答: 自己写的程序是不建议用com.sun这个玩意儿的..这东西属于“Deprecated and restricted API”.. 而且各种com.sun的 ...

  2. CODING 仪表盘功能正式推出,实现工作数据可视化!

    CODING 仪表盘功能现已正式推出!该功能旨在用一张张统计卡片的形式,统计并展示使用 CODING 中所产生的数据.这意味着无需额外的设置,就可以收集归纳宝贵的工作数据并予之量化分析.这些海量的数据 ...

  3. 初入Shell

    shell 第1章 Shell概述 大数据程序员为什么要学习Shell呢? 1)需要看懂运维人员编写的Shell程序. 2)偶尔会编写一些简单Shell程序来管理集群.提高开发效率. 第2章 Shel ...

  4. nova 通过 python curl 创建虚拟机---keystone v3

    #! /bin/python #coding=utf- import urllib2 import json import requests # token post_url = 'http://10 ...

  5. linux tmpfs及消耗内存脚本

    一.tmpfs介绍 tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面VM是由linux内核里面的vm子系统管理的东西,现在大多数操作系统都采用了虚拟内存管理机制VM ...

  6. RSA加密算法和SSH远程连接服务器

    服务器端与客户端的密钥系统不一样,称为非对称式密钥系统 RSA算法的基础是模运算x mod n,事实上: [(a mod n) + (b mod n)] mod n = (a+b) mod n [(a ...

  7. webgl实现径向模糊

    径向模糊简介 径向模糊,是一种从中心向外呈幅射状,逐渐模糊的效果. 因此径向模糊经常会产生一些中心的发散效果,在PS中同样也有径向模糊的滤镜效果. 径向模糊通常也称为变焦模糊.径向模糊(Radial ...

  8. Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳

    Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 25 转载请注明出处! 目录 Windows & Lin ...

  9. Redis+Kafka异步提高并发

    Redis+Kafka异步提高并发 Redis+Kafka异步提高并发 设计 实现 提交请求接口 Kafka消费队列 异步处理Service 客户端轮询获取结果 Redis集群节点配置 KafKa集群 ...

  10. 百度与谷歌seo优化的差别

    http://www.wocaoseo.com/thread-126-1-1.html 常有朋友问谷歌(google)和百度(baidu)到底有什么区别?我在纠结这个问题该如何回答.如果从公平公正的角 ...