Redis集合(Set)
概述Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
sadd添加set元素(添加一个或多个),set集合如果不存在就会先创建集合
sadd key member1 member2…
127.0.0.1:6379> sadd set1 a b c a(integer) 3
smembers查看指定key集合元素
smembers key
127.0.0.1:6379> smembers set11)”b”2)”a”3)”c”
srem删除元素(删除一个或多个元素)
srem key member1 member2…
127.0.0.1:6379> smembers set11)”1”2)”c”3)”a”4)”b”5)”3”6)”2”127.0.0.1:6379> srem set1 a 1(integer) 2127.0 ...
Redis结合JSON存储Java对象
概述先将Java对象转化成json字符串,然后Redis存储json字符串
实现过程引入gson依赖12345<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version></dependency>
使用到的方法Jedis.rpop()
右侧弹出元素
Jedis.llen()
获取Redis的list长度
Jedis.rpush()
从右侧开始添加元素
Jedis.lrange()
获取全部元素集合
Gson.toJson()
Java对象转化成json
Gson.fromJson()
json转化成Java对象
Java代码
Fruit实体类
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535 ...
Redis列表(List)
lpush方式添加,从左边开始添加
lpush key value1 value2…
127.0.0.1:6379> lpush l1 a b c d(integer) 4127.0.0.1:6379> lpush l1 1 2 3 4(integer) 8
rpush从右端开始添加(一般人比较习惯这种方式)
rpush key value1 value2…
127.0.0.1:6379> rpush l2 a b c d(integer) 4127.0.0.1:6379> rpush l2 1 2 3 4(integer) 8127.0.0.1:6379> lrange l2 0 -11)”a”2)”b”3)”c”4)”d”5)”1”6)”2”7)”3”8)”4”
lrange获取指定方位的集合元素(end是-1时表示最后一个位置)
lrange key start end
127.0.0.1:6379> lrange l1 0 -11)”4”2)”3”3)”2”4)”1”5)”d”6)”c”7)”b”8)”a”
lpop左侧弹出集合元素,返回弹出 ...
Redis哈希(Hash)
概述Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
hset为单个字段设置值
hset key 字段名 值
127.0.0.1:6379> hset h1 username root(integer) 1127.0.0.1:6379> hset h1 password 123456(integer) 1
hget获取字段的值
hget key 字段名
127.0.0.1:6379> hget h1 username“root”127.0.0.1:6379> hget h1 password“123456”
hmset为多个字段一起设置值
hmset key 字段名1 值 字段名2 值 …
127.0.0.1:6379> hmset h2 username ledao password 333OK
hmget获取多个字段的值
hmget key 字段名1 字段名2 …
127.0.0.1:63 ...
Redis keys命令
get获取指定 key 的值
get key
127.0.0.1:6379> get name“ledao”
del删除指定key
del key
127.0.0.1:6379> get num“1”127.0.0.1:6379> del num(integer) 1127.0.0.1:6379> get num(nil)
exists检查给定 key 是否存在
exists key
127.0.0.1:6379> exists name(integer) 1
type返回 key 所储存的值的类型删除指定key
type key
127.0.0.1:6379> type namestring
keyskeys *显示所有key
127.0.0.1:6379> keys *1)”set3”2)”age”3)”l1”4)”newSet”5)”l2”6)”set1”7)”1”8)”fruitList”9)”set2”
keys f*查找所有以某字符串开头的key
127.0.0.1:6379> keys f*1)”fruitList”
ren ...
Redis字符串
get获取指定key的值
get key
127.0.0.1:6379> get name“ledao”
set设置指定key的值(如果key不存在就新建并复制,存在则值覆盖)
set key 值
127.0.0.1:6379> set name ledaoOK127.0.0.1:6379> get name“ledao”127.0.0.1:6379> set name ledao333OK127.0.0.1:6379> get name“ledao333”
del删除指定key,删除一个或多个
del key1 key2 …
127.0.0.1:6379> get num“1”127.0.0.1:6379> del num(integer) 1127.0.0.1:6379> get num(nil)
getrange返回 key 中字符串值的子字符(包括头包括尾,下标从0开始计算)
getrange key 开始位置 结束位置
127.0.0.1:6379> set name ledao333OK127.0.0.1:6379> ...
CentOS7关闭Redis的两种方法
使用Linux命令如果设置了连接密码,就不能使用此方法
1/usr/local/redis/bin/redis-cli shutdown
使用Redis命令先进入Redis客户端
1/usr/local/redis/bin/redis-cli
进入客户端后输入shutdown关闭Redis服务,然后按ctrl+c退出
PS.查看Redis服务是否开启(有端口号说明Redis服务已经启动,没有则说明服务已停止)
1ps -ef | grep -i redis
Redis使用连接池
池化的基本思想
可以在初始化的时候创建一些对象,当有需要使用的时候直接从池中获取,提高响应速度;
使用过的对象不进行销毁,保存起来,等下一次需要对象的时候,拿出来重复使用,减少频繁创建对象所造成的销;
创建的对象统一保存,方面管理和维护。
池化好处总结
提高响应的速度
降低资源的消耗
方便管理和维护
Jedis连接的就是连接池中JedisPool管理的资源,JedisPool保证资源在一个可控范围内,并且保障线程安全。使用合理的GenericObjectPoolConfig配置能够提升Redis的服务性能,降低资源开销。
重要参数下列两表将对一些重要参数进行说明
空闲Jedis对象检测由下列四个参数组合完成,testWhileIdle是该功能的开关。
可以在org.apache.commons.pool2.impl.BaseObjectPoolConfig中查看全部默认值。
关键参数设置建议maxTotal(最大连接数)想合理设置maxTotal(最大连接数)需要考虑的因素较多,如:
业务希望的Redis并发量
客户端执行命令时间
Redis资源,例如nodes( ...
实现Jedis连接
引入依赖12345<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>
Java代码12345678910111213141516171819package com.ledao.jedis;import redis.clients.jedis.Jedis;/** * @author LeDao * @company * @create 2021-06-20 7:47 */public class JedisTest { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.0.153", 6379); jedis.set("name&q ...
CentOS7安装Redis
安装gccgcc编译c的,因为redis是c编写的,所以我们先安装下gcc
1yum install gcc-c++
下载wget方式下载redis压缩包,并解压,以及编译
下载命令
1wget http://download.redis.io/releases/redis-3.2.9.tar.gz
解压命令
1tar -zxvf redis-3.2.9.tar.gz
编译命令,进入解压后的文件夹,在执行make命令
12cd redis-3.2.9make
安装安装命令
1make PREFIX=/usr/local/redis install
安装完后,需要将刚刚解压的文件夹内redis.conf复制到redis的安装目录/usr/local/redis/中
1cp /root/redis-3.2.9/redis.conf /usr/local/redis/
启动和关闭Redis前台启动和关闭启动命令如下:
1/usr/local/redis/bin/redis-server
看到下面的界面说明已经启动成功了
按CTRL+C退出
这种启动是前台启动,假如退出程序就 ...