Redis的相关操作
1.下载和安装
1.上传redis安装包(个人比较喜欢使用xshell,直接进入到指定的文件夹下面,拖拽进去即可)
2.解压redis:tar -xvf redis-5.0.tar.gz
3.编译和安装:
要求:在redis根目录中执行(此处解压过之后的文件夹已经被我修改成redis)
编译:make
安装:make install
4.修改redis配置文件
编辑文件:vim redis.conf
(1)去除IP绑定,默认的是本地,真实项目开发中,我们肯定是有很多台电脑访问的,所以说IP地址肯定是不一样的。
(2)关闭保护模式:
(3)开机后台启动
2.Redis操作命令
启动:redis-server redis.conf
客户端:redis-cli
关闭redis服务:redis-cli shutdown
redis的类型有:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、ZSet(Sorted set集合)
命令 | 说明 | 案例 |
---|---|---|
添加key-value | set username admin | |
get | 根据key获取数据 | get username |
strlen | 根据key获取值的长度 | strlen key |
exists | 判断key是否存在 | exists name 返回1存在 0不存在 |
del | 删除redis中的key | del key |
Keys | 用于查询符合条件的key | keys * 查询redis中全部的keykeys n?me 使用占位符获取数据keys nam* 获取nam开头的数据 |
mset | 赋值多个key-value | mset key1 value1 key2 value2 key3 value3 |
mget | 获取多个key的值 | mget key1 key2 |
append | 对某个key的值进行追加 | append key value |
type | 检查某个key的类型 | type key |
select | 切换redis数据库 | select 0-15 redis中共有16个数据库 |
flushdb | 清空单个数据库 | flushdb |
flushall | 清空全部数据库 | flushall |
incr | 自动加1 | incr key |
decr | 自动减1 | decr key |
incrby | 指定数值添加 | incrby 10 |
decrby | 指定数值减 | decrby 10 |
expire | 指定key的生效时间 单位秒 | expire key 20 key20秒后失效 |
pexpire | 指定key的失效时间 单位毫秒 | pexpire key 2000key 2000毫秒后失效 |
ttl | 检查key的剩余存活时间 | ttl key |
persist | 撤销key的失效时间 | persist key |
(2)Hash类型
命令 | 说明 | 案例 |
---|---|---|
hset | 为对象添加数据 | hset key field value |
hget | 获取对象的属性值 | hget key field |
hexists | 判断对象的属性是否存在 | HEXISTS key field1表示存在 0表示不存在 |
hdel | 删除hash中的属性 | hdel user field [field …] |
hgetall | 获取hash全部元素和值 | HGETALL key |
hkyes | 获取hash中的所有字段 | HKEYS key |
hlen | 获取hash中所有属性的数量 | hlen key |
hmget | 获取hash里面指定字段的值 | hmget key field [field …] |
hmset | 为hash的多个字段设定值 | hmset key field value [field value …] |
hsetnx | 设置hash的一个字段,只有当这个字段不存在时有效 | HSETNX key field value |
hstrlen | 获取hash中指定key的长度 | HSTRLEN key field |
hvals | 获取hash的所有值 | HVALS user |
(3)List类型(可以向左插入,也可以向右插入)
命令 | 说明 | 案例 |
---|---|---|
lpush | 从队列的左边入队一个或多个元素 | LPUSH key value [value …] |
rpush | 从队列的右边入队一个或多个元素 | RPUSH key value [value …] |
lpop | 从队列的左端出队一个元素 | LPOP key |
rpop | 从队列的右端出队一个元素 | RPOP key |
lpushx | 当队列存在时从队列的左侧入队一个元素 | LPUSHX key value |
rpushx | 当队列存在时从队列的右侧入队一个元素 | RPUSHx key value |
lrange | 从列表中获取指定返回的元素 | LRANGE key start stop Lrange key 0 -1 获取全部队列的数据 |
lrem | 从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:· count > 0: 从头往尾移除值为 value 的元素。· count < 0: 从尾往头移除值为 value 的元素。· count = 0: 移除所有值为 value 的元素。 | LREM list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。 |
Lset | 设置 index 位置的list元素的值为 value | LSET key index value |
3.Redis事务命令:
命令 | 说明 | 案例 |
---|---|---|
multi | 标记一个事务开始 | 127.0.0.1:6379> MULTIOK |
exec | 执行所有multi之后发的命令 | 127.0.0.1:6379> EXEC OK |
discard | 丢弃所有multi之后发的命令 |
4.个人测试连接
注意点:在测试的时候,一定要注意以下几点内容:
1)上三处要修改的地方,一定要按照要求进行修改
2)Linux有没有设置关闭防火墙
3)IP地址是否正确
4)redis服务是否启动
1.依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
2.测试代码展示:
public void testString() {
String host ="192.168.80.134";//ip地址
int port=6379;//端口号
Jedis jedis = new Jedis(host, port);
jedis.set("1705", "redis学习");
System.out.println("获取redis数据"+jedis.get("1705"));
}
5.Redis常用工具:
1.对象转化成json
public static String toJSON(Object data) {
String json = null;
try {
json=MAPPER.writeValueAsString(data);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
return json;
}
```
2.json转成对象:
```java
public static <T> T toObject(String json,Class<T> target) {
T obj = null;
try {
obj = MAPPER.readValue(json, target);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return obj;
}```