启动Redis
redis/bin/redis-server redis/redis.conf
启动客户端
redis/bin/redis-cli -h node1 -p 6379
数据结构
-
String类型
-
KV:【String,String】,类似于Java中Map集合的一条KV
-
-
Hash类型
-
KV:【String,Map集合】:Map集合的嵌套,Map集合中的元素是无序的
-
-
List类型
-
KV:【String,List】:有序且可重复
-
-
Set类型
-
KV:【String,Set】:无序且不重复
-
-
Zset类型
-
KV:【String,TreeMap集合】:Value也类似于Map集合,有序的Map集合
-
类似于List和Set集合特点的合并:有序且不可重复
-
常用命令
-
keys:列举当前数据库中所有Key
-
语法:keys 通配符
-
del key:删除某个KV
-
exists key :判断某个Key是否存在
-
type key:判断这个K对应的V的类型的
-
expire K 过期时间:设置某个K的过期时间,一旦到达过期时间,这个K会被自动删除
-
ttl K:查看某个K剩余的存活时间
-
select N:切换数据库的
-
Redis默认由16个数据:db0 ~ db15,个数可以通过配置文件修改,名称不能改
-
Redis是一层数据存储结构:所有KV直接存储在数据库中
-
-
默认进入db0
-
move key N:将某个Key移动到某个数据库中
-
flushdb:清空当前数据库的所有Key
-
flushall:清空所有数据库的所有Key
Jedis pom文件
<properties>
<jedis.version>3.2.0</jedis.version>
</properties>
<dependencies>
<!-- Jedis 依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
连接方法
//方式一:直接构建一个Jedis连接实例
// Jedis jedis = new Jedis("192.168.88.151",6379);
//方式二:使用连接池构建
//构建连接池配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10); //设置最大连接数
//构建连接池
JedisPool jedisPool = new JedisPool(config,"192.168.88.151",6379);
//获取连接
Jedis jedis = jedisPool.getResource();
jedis.close();
String 操作 set/get/incr/exists/expire/setexp/ttl
Hash 操作 hset/hmset/hget/hgetall/hdel/hlen/hexists
list 操作 lpush/rpush/lrange/llen/lpop/rpop
set 操作 sadd/smembers/sismember/scard/srem
zset 操作 zadd/zrange/zrevrange/zcard/zrem
String类型的常用命令
set:给String类型的Value的进行赋值或者更新
语法:set K V
get:读取String类型的Value的值
语法:get K
mset:用于批量写多个String类型的KV
语法:mset K1 V1 K2 V2 ……
mget:用于批量读取String类型的Value
语法:mget K1 K2 K3 ……
setnx:只能用于新增数据,当K不存在时可以进行新增
语法:setnx K V
应用:构建抢占锁,搭配expire来使用
incr:用于对数值类型的字符串进行递增,递增1,一般用于做计数器
语法:incr K
incrby:指定对数值类型的字符串增长固定的步长
语法:incrby K N
decr:对数值类型的数据进行递减,递减1
语法:decr K
decrby:按照指定步长进行递减
语法:decrby K N
incrbyfloat:基于浮点数递增
语法:incrbyfloat K N
strlen:统计字符串的长度
语法:strlen K
getrange:用于截取字符串
语法:getrange s2 start end
Hash类型的常用命令
hset:用于为某个K添加一个属性
语法:hset K k v
hget:用于获取某个K的某个属性的值
语法:hget K k
hmset:批量的为某个K赋予新的属性
语法:hmset K k1 v1 k2 v2 ……
hmget:批量的获取某个K的多个属性的值
语法:hmget K k1 k2 k3……
hgetall:获取所有属性的值
语法:hgetall K
hdel:删除某个属性
语法:hdel K k1 k2 ……
hlen:统计K对应的Value总的属性的个数
语法:hlen K
hexists:判断这个K的V中是否包含这个属性
语法:hexists K k
hvals:获取所有属性的value的
语法:hvals K
List类型的常用命令
lpush:将每个元素放到集合的左边,左序放入
语法:lpush K e1 e2 e3……
rpush:将每个元素放到集合的右边,右序放入
语法:rpush K e1 e2 e3……
lrange:通过下标的范围来获取元素的数据
语法:lrange K start end
注意:从左往右的下标从0开始,从右往左的下标从-1开始,一定是从小的到大的下标
lrange K 0 -1:所有元素
llen:统计集合的长度
语法:llen K
lpop:删除左边的一个元素
语法:lpop K
rpop:删除右边的一个元素
语法:rpop K
Set类型的常用命令
sadd:用于添加元素到Set集合中
语法:sadd K e1 e2 e3 e4 e5……
smembers:用于查看Set集合的所有成员
语法:smembers K
sismember:判断是否包含这个成员
语法:sismember K e1
srem:删除其中某个元素
语法:srem K e
scard:统计集合长度
语法:scard K
sunion:取两个集合的并集
语法:sunion K1 K2
sinter:取两个集合的交集
语法:sinter K1 K2
Zset类型的常用命令
zadd:用于添加元素到Zset集合中
语法:zadd K score1 k1 score2 k2 ……
zrange:范围查询
语法:zrange K start end [withscores]
zrevrange:倒序查询
语法:zrevrange K start end [withscores]
zrem:移除一个元素
语法:zrem K k1
zcard:统计集合长度
语法:zcard K
zscore:获取评分
语法:zscore K k