当谈到缓存和键值存储时,Redis(Remote Dictionary Server)无疑是一个非常受欢迎的解决方案。它被广泛用于构建高性能、可扩展和可靠的应用程序。在本博客中,我们将带您入门Redis,并介绍一些基本概念和常用命令。
1.Redis是什么?
Redis是一个开源的内存数据结构存储系统,可以用作缓存、数据库和消息队列代理。它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。Redis是单线程的,使用异步I/O和内存映射文件来提供快速的读写性能。
2.安装和运行Redis
首先,确保您的Linux系统上已经安装了Redis。您可以通过以下命令来检查是否已安装:
redis-cli --version
如果Redis未安装,请按照Redis官方文档提供的说明进行安装。
在安装完成后,您可以通过以下命令启动Redis服务器:
redis-server
3.Redis的基本命令
Redis提供了丰富的命令集,以便于存储、检索和处理数据。以下是一些常见的Redis命令:
-
SET key value
: 设置给定键的值。 -
GET key
: 获取给定键的值。 -
DEL key
: 删除给定键的值。 -
EXISTS key
: 检查给定键是否存在。 -
INCR key
: 将给定键的值递增1。 -
DECR key
: 将给定键的值递减1。 -
HSET key field value
: 设置给定哈希表中字段的值。 -
HGET key field
: 获取给定哈希表中字段的值。 -
LPUSH key value
: 将值推入给定列表的左侧。 -
RPUSH key value
: 将值推入给定列表的右侧。 -
LPOP key
: 从给定列表的左侧弹出一个元素。 -
RPOP key
: 从给定列表的右侧弹出一个元素。
这些命令只是Redis提供的众多命令的一小部分。您可以查阅Redis官方文档来获得更多命令的详细信息。
4.Redis的五种基本数据类型
redis基本数据类型
redis一共分为5中基本数据类型:String,Hash,List,Set,ZSet
第一种String
String类型是包含很多种类型的特殊类型,并且是二进制安全的。比如序列化的对象进行储存,比如一张图片进行二进制储存,比如一个简单的字符串数值等等。
set和get方法:
设置值set name realValue
取值 get name
说明:set设置name的时候,如果name重复,设置的值会进行覆盖。
第二种Hash类型
Hash类型是String类型的filed和value的映射表,或者说是一个String的结合,他特别适合存储对象。相比较而言把一个对象存储在Hash类型中要比直接存储在String中更加节省空间。并方便存储整个对象,Hash类型也是我们工作中最常用的一种。
形如:hset user name ming 意思是一个Hash类型叫做user,这个user的属性name的值是ming。
使用hget来获取值 hget user name 就能获取到这个对象中的name属性的值。
第三种List
List类型是一个链表结构的集合,其主要功能有push,pop获取元素等等。更详细的说List类型是一个双端链表结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素。List的设计非常简单精巧,既可以作为栈又可以作为队列。满足绝大多数要求。
lpush方法:从头部添加元素,(栈)先进后出。
设置值 lpush list hello
说明:创建一个name为list的栈,并且入栈一个hello
rpush方法:从尾部添加元素(队列)先进先出
设置值lpush list2 hello
说明:创建一个name为list2的队列,并且入栈一个hello
第四种Set类型
set集合是String类型的无序集合,set是通过hashtable实现的,对集合我们可以取交集,并集,差集。
sadd方法:向名称为key的set中添加元素。
小结:set集合不允许重复元素,smembers查看set中的所有元素。
常用方法
srem方法 删除set集合元素。srem name 值
spop方法 随机返回删除的key
sdiff返回两个集合不同元素,哪个集合在前面就以哪个集合为标准。
sdiffstore 将返回的不同元素存储在另一个集合里面。 sdiffstore set3 set1 set2 。吧1和2的不同元素存储在3中
sinter 返回两个集合的交集。sinter set1 set2 返回set1中和set2中的交集元素。
sinterstore 将返回的交集存储在一个新的集合中
smove方法:从一个set集合中移动元素到另一个set集合中 smove set2 set1 bbb 将set2中的bbb移动到set1中。
scard方法:查看集合中元素的个数。
第五种ZSet类型
Zset是在set的基础上做了一个有序的调整。
zadd方法:向有序集合中添加一个元素,如果该元素存在,就更新顺序。
小结:在重复插入的时候会根据顺序属性更新。
语法:zadd set1 1 aaa 其中的1代表序号。 就是排序的序号。aaa代表集合的值,set1代表集合的名字。
zrange 方法,查看集合中的值 zrange set1 0 -1 withscores
说明:withscores代表把序号也查询出来,不想显示序号可以不加。
zrem方法 删除集合中的元素。
redis高级命令
keys * 返回所有的name
5.使用场景
使用Redis构建缓存系统
Redis最常用的场景之一是构建缓存系统。通过将经常访问的数据存储在Redis中,可以提高应用程序的性能和响应速度。
以下是一个简单的示例,展示如何使用Redis作为缓存:
import redis.clients.jedis.Jedis;
public class RedisCache {
private Jedis jedis;
public RedisCache() {
jedis = new Jedis("localhost");
}
public void set(String key, String value) {
jedis.set(key, value);
}
public String get(String key) {
return jedis.get(key);
}