初识Redis,
本文的核心内容:了解Redis的特点、在Linux的环境下安装Redis、Redis的基本指令、Redis的基本数据类型与指令操作、通过Jedis操作Redis。
一:什么是Redis
Redis 是一个开源免费的基于内存的key-value存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如:字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)等。 Redis特性丰富,客户端支持现阶段流行的大多数编程语言。
Redis的特点:
1. Redis是一个高性能的key/value内存型数据库
2. Redis数据类型丰富(string、list、set、zset、hash等)
3. Redis支持数据持久化(AOF和RDB两种持久化方式)
4. Redis读写性能优异,单线程运行效率高
二:redis的安装【Linux】
1:准备环境【虚拟机+CentOS6.5】
2:安装Redis依赖gcc(64位)【博主安装Nginx时,已安装Gcc不再截图演示】
3:下载Redis
http://download.redis.io/releases/redis-3.2.8.tar.gz
通过winSCP导入虚拟机操作系统
4:安装步骤
tar -zxvf redis-3.2.8.tar.gz
编译
cd /redis-3.2.8/
make
安装【指定安装目录为:/usr/local/redis install】
make PREFIX=/usr/local/redis install
将配置文件复制到安装目录下
Cp redis.conf /usr/local/redis/
5:启动redis
Cd /usr/local/redis/
./bin/redis-server redis.conf
创建另一个连接 连接redis
./bin/redis-cli
三:Redis的基本操作命令 【只需要记住常用的指令即可,红色标记为重要指定必须记住】
①:对数据库的操作指令
1.选择数据库
select index[0-15]
注意:redis默认会存在16个数据库库,编号从0-15,默认使用0号数据库
2. 数据库操作
清空当前数据库数据 flushdb
清空所有数据库数据 flushall
②:对数据库key的操作【重要的指令以红色标注】
1.del key1 key2 ... Keyn
作用: 删除1个或多个键
返回值: 不存在的key忽略掉,返回真正删除的key的数量
2.rename key newkey
作用: 给key赋一个新的key名
注:如果newkey已存在,则newkey的原值被覆盖
3.move key db
作用:移动key到指定数据库
返回值: 移动成功返回1,失败则返回0
4.keys pattern
作用:查找所有符合给定模式pattern 的key
keys * 匹配数据库中所有key
keys h?llo 占位匹配符合条件一个字符key,如:hello、hallo 和hxllo 等
kyes h*llo 通配匹配一个或者多个字符key,如:hllo 和heeeeello 等。
keys h[ae]llo 选择匹配一个或者多个字符key,如:hello和hallo
特殊符号用 \ 隔开
返回值:符合条件的key列表
5.randomkey
作用:返回随机 key
返回值:数据库为空返回nil,不为空返回key名
6.exists key
作用:判断key是否存在
返回值:存在返回1,不存在返回0
7.type key
作用:返回key存储的值的类型
返回值:string,list,set,order set,hash
8.ttl key
作用:查询key的生命周期
返回值:当key 不存在时,返回-2
当key 存在但没有设置剩余生存时间时,返回-1
否则,以秒为单位,返回key 的剩余生存时间
9.expire key
作用:设置key的生命周期,以秒为单位
返回值:如果生存时间设置成功,返回1
当key 不存在或没办法设置生存时间,返回0
同理:
pexpire key 毫秒数,设置生命周期
pttl key,以毫秒返回生命周期
10.persist key
作用:把指定key置为永久有效
四:redis基本数据类型的操作指令
【指令虽然工作中并不常用,但是使用Jedis API操作redis数据库,方法名与指令一致。记住指令有利于掌握Jedis的使用。】
String类型:
命令 | 说明 |
set | 设置一个key/value |
get | 根据key获得对应的value |
mset | 一次设置多个key value |
mget | 一次获得多个key的value |
getset | 获得原始key的值,同时设置新值 |
strlen | 获得对应key存储value的长度 |
append | 为对应key的value追加内容 |
getrange | 截取value的内容 |
setex | 设置一个key存活的有效期(秒) |
psetex | 设置一个key存活的有效期(豪秒) |
setnx | 存在不做任何操作,不存在添加 |
msetnx | 可以同时设置多个key,只有有一个存在都不保存 |
decr | 进行数值类型的-1操作 |
decrby | 根据提供的数据进行减法操作 |
Incr | 进行数值类型的+1操作 |
incrby | 根据提供的数据进行加法操作 |
Incrbyfloat | 根据提供的数据加入浮点数 |
List类型【双向链表,可以从两边插入数据,维护顺序】
命令 | 说明 |
lpush | 将某个值加入到一个key列表头部 |
lpushx | 同lpush,但是必须要保证这个key存在 |
rpush | 将某个值加入到一个key列表末尾 |
rpushx | 同rpush,但是必须要保证这个key存在 |
lpop | 返回和移除列表的第一个元素 |
rpop | 返回和移除列表的第一个元素 |
lrange | 获取某一个下标区间内的元素 |
llen | 获取列表元素个数 |
lset | 设置某一个指定索引的值(索引必须存在) |
lindex | 获取某一个指定索引位置的元素 |
lrem | 删除重复元素 |
ltrim | 保留列表中特定区间内的元素 |
linsert | 在某一个元素之前,之后插入新元素 |
Set类型【元素无序,不能重复】
命令 | 说明 |
sadd | 为集合添加元素 |
smembers | 显示集合中所有元素 无序 |
scard | 返回集合中元素的个数 |
spop | 随机返回一个元素 |
smove | 从一个集合中向另一个集合移动元素 |
srem | 从集合中删除一个元素 |
sismember | 判断一个集合中是否含有这个元素 |
srandmember | 随机返回元素 |
sdiff | 去掉第一个集合中其它集合含有的相同元素 |
sinter | 求交集 |
sunion | 求和集 |
Zset类型
命令 | 说明 |
zadd | 添加一个有序集合元素 |
zcard | 返回集合的元素个数 |
zrange | 返回一个范围内的元素 |
zrangebyscore | 按照分数查找一个范围内的元素 |
zrank | 返回排名 |
zrevrank | 倒序排名 |
zscore | 显示某一个元素的分数 |
zrem | 移除某一个元素 |
zincrby | 给某个特定元素加分 |
Hash类型
命令 | 说明 |
hset | 设置一个key/value对 |
hget | 获得一个key对应的value |
hgetall | 获得所有的key/value对 |
hdel | 删除某一个key/value对 |
hexists | 判断一个key是否存在 |
hkeys | 获得所有的key |
hvals | 获得所有的value |
hmset | 设置多个key/value |
hmget | 获得多个key的value |
hsetnx | 设置一个不存在的key的值 |
hincrby | 为value进行加法运算 |
hincrbyfloat | 为value加入浮点值 |
五:JavaAPI操作Redis
引入Jar包
【Jedis的方法与Redis的指令一致,因此我们可以根据指令的意义去操作Jedis】
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* Created by Maps on 2018/6/26.
*/
public class MyRedis {
@Test
public void method(){
//通过链接获取对象。
Jedis jedis = new Jedis("192.168.58.128",6379);
jedis.set("name","Jane");
jedis.set("address","BJ");
jedis.close();
}
}