非关系型数据库Redis
Redis简介
Redis官网
Redis教程
Redis是一种基于C语言编写的开源的内存存储数据结构,可用做数据库、缓存和消息队列,Redis使用键值对(key-value)的形式存储数据,由于其将数据存储在内存上而非磁盘上,因此具有较高的性能。
Redis支持的数据类型
Redis支持五种数据类型:
1、字符串(Strings)
2、集合(Sets)
3、列表(Lists)
4、有序集合(Sorted Sets)
5、散列(Hashs)
Redis常用命令
存储String类型数据
命令 | 描述 |
---|---|
set key value | 设置指定的key值 |
get key | 获取指定的key值 |
getset key value | 获取旧的value值,再将key的值设置为value |
incr key | 将key中存储的数字增1 |
decr | 将key中存储的数字减1 |
incrby key increment | 将key所储存的值加上给定的增量值(increment) |
decrby key decrement | 将key所储存的值减去给定的减量值(decrement) |
append key value | 如果key已经存在并且是一个字符串,则将指定的value追加原来值的value的末尾,如果key不存在,则重新创建一个key/value |
strlen key | 返回key所储存的字符串值的长度 |
存储List类型数据
List类型的数据与普通的链表一样,按照插入顺序进行排序,并且可以在list的头部或者尾部添加数据,一个List最多可以包含232 - 1个元素。关于存储list类型的数据的常用命令如下:
命令 | 描述 |
---|---|
lpush key value1 value2… | 将一个或多个值插入到列表头部 |
rpush key value1 value2… | 在列表尾部中添加一个或多个值 |
lindex key index | 通过索引获取列表中的元素 |
lrange key start end | 获取列表指定范围内的元素,start、end可为负数,若为-1则表示链表尾部的元素 |
lpushx key value | 将一个值插入到已存在的列表头部 |
rpushx key value | 将一个值插入到已存在的列表尾部 |
lpop key | 移出并获取列表的第一个元素 |
rpop key | 移除并获取列表最后一个元素 |
rpoplpush source destination | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
llen key | 返回指定的key关联的链表中的元素的数量 |
lrem key count value | 移除count个值为value的元素 |
linsert key before/after pivot value | 在列表的pivot元素前或者后插入元素 |
存储Set类型数据
Set类型的数据可以理解为无序的、不重复的String类型的集合,其常用的命令如下:
命令 | 描述 |
---|---|
sadd key value1 value2… | 向set集合添加一个或多个数据 |
scard key | 获取集合的成员的数量 |
smembers key | 获取set集合中所有的成员 |
sismember key member | 判断参数中指定的成员是否在该set中 |
srem key member1 member2… | 移除set集合中一个或多个成员 |
srandmember key | 随机返回set中的一个成员 |
sdiff key1 key2 | 返回key1与key2集合的差集 |
sdiffstore destination key1 key2 | 将key1与key2的差集存储在destination上 |
sinter key[key1,key2…] | 返回指定集合的交集 |
sinterstore destination key1 key2 | 将key1与key2的交集存储在destination上 |
sunion key1 key2… | 返回指定集合的并集 |
sunionstore destination key1 key2 | 将key1与key2的并集存储在destination上 |
存储Hash类型数据
Redis中Hash类型的数据其value值类似一个Map集合,因此比较适合存储对象。一个Hash最多可以包含232 - 1个键值对
命令 | 描述 |
---|---|
hset key field value | 将哈希表key中的字段field的值设为value |
hgetall key | 获取key中的所有filed-vaule |
hget key field | 获取指定的key的filed的值 |
hmset key fields | 判断参数中指定的成员是否在该set中 |
hmset key field1 value1 [field2 value2 ] | 同时将多个field-value(域-值)对设置到哈希表 key 中 |
hexists key field | 判断哈希表指定的key中指定的字段是否存在 |
hlen key | 获取key所包含的field的数量 |
hincrby key field increment | 为哈希表key中的指定字段的整数值加上增量increment |
存储Sorted Set类型数据
Sorted Set类型的数据是有序的,但是不允许重复,并且Sorted Set中的每一个元素都会有一个double类型的分数与之关联,Sorted Set类型的数据能够做到有序,也正是因为这个分数的存在,但是值得注意的是,分数是允许重复的,集合中的元素不能重复。由于这一特点,Redis可以用于游戏排名、微博热点话题等使用场景。其常用的命令如下:
命令 | 描述 |
---|---|
zadd key score member score2 member2 | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zcard key | 获取集合中的成员数量 |
zcount key min max | 获取分数在[min,max]之间的成员 |
zcount key member | 获取有序集中,成员的分数值 |
zrem key member [member …] | 移除有序集合中的一个或多个成员 |
Java连接Redis
在使用Java连接Redis之前,需要先进行安装,通常情况下,Redis安装在Linux系统中,操作之前先安装好并启动Redis。除此之外还需要用到两个Jar包:jedis-2.9.0.jar
以及commons-pool2-2.6.0.jar
配置资源文件:1
2
3
4
5redis.maxIdle=50
redis.minIdle=10
redis.maxTotal=50
redis.url=localhost
redis.port=6379
编写工具类:
1 | package com.my.utils; |
编写测试类:
1 | package com.my.jedis; |