数据类型
1)、五大数据类型
key+
①string
②set
③list
④hash
⑤zset
tips:只能存储字符串
2)、String
①最基本类型
二进制安全意味着可以包含任何数据,如jpg图片或序列化的对象
value最大为512M
②指令:
指令 | 功能 |
---|---|
append key value | 追加字符串 |
strlen key | 获取长度 |
setnx key value | key不存在时,设置key对应的value |
incr key | 将key中存储的数字值增一(不为数字类型报错),若为空从0开始 |
decr key | 将key中存储的数字值减一 |
incrby/decrby key 步长 | 自定义步长进行增减 |
mset key1 value1 key2 value2 | 同时设置多个键值对 |
mget key1 value1 key2 value2 | 同时获取多个value |
msetnx key1 value1 key2 value2 | 同时设置多个key-value,当且仅当所有的key都不存在 |
getrange key 起始位置 结束位置 | 类似substring,区别两边都为开区间 |
setrange key 起始位置 结束位置 | 覆盖之前的数据 |
setex key 过期时间 value | 创建键值对的同时设置过期时间 |
getset key value | 改value时获取其原来的值 |
③原子性
不会被线程调度机制打断的操作,一旦开始就会一直运行到结束
Redis单命令的原子性得益于Redis的单线程
3)、List
①单键多值
简单的字符串列表(list只能存string),按照插入顺序排序
实质为双向链表,两端操作性能高
②指令:
指令 | 功能 |
---|---|
lpush/rpush key value1 value2 | 从左/右插入多个值 |
lpop/rpop key | 从左/右弹出一个值 |
rpoplpush key1 key2 | 从key1右边弹出一个值加入到key2左边 |
lrange key start stop | 按照索引下标获得元素(从左到右) |
lindex key index | 按照索引下标获得元素(从左到右) |
llen key | 获得列表长度 |
linsert key before/after value newvalue | 在value前面/后面插入newvalue |
lrem key n value | 从左边删除n个value(n为正数从左到右,负数从右到左,0表全部删除) |
Ps:左边为表头(0开始)、右边为表尾(-1开始)
4)、Set
①自动排重
String类型的无序集合,底层为一个value为null的hash表,即查找复杂度为O(1)
②指令:
指令 | 功能 |
---|---|
sadd key value1 value2 | 将一个或多个member元素加入到集合key |
smembers key | 取出该集合中所有制 |
sismember key vcalue | 判断集合key是否含有该value(1/0) |
scard key | 返回集合中的元素 |
srem key value1 value2 | 返回该集合的元素个数 |
srem key value1 value2 | 删除集合中的某个元素 |
spop key | 随机从该集合中吐出一个值 |
srandmember key n | 随机从集合中取出n个值,不会从集合中删除 |
sinter key1 key2 | 返回两个集合的交集 |
sunion key1 key2 | 返回两个集合的并集元素 |
sdiff key1 key2 | 返回两个集合的差集(key1-key2)元素 |
5)、hash
①键值对集合
string类型的field和value的映射表,适合存储对象(<String,String>)
②对象存储方式:
用户ID—————可将对象序列化存储到redis
或
用户ID+标签(一般使用冒号进行分隔)——————标签对应数据
③指令
指令 | 功能 |
---|---|
hset key field value | 存储一个key-(field-value) |
hget key field | 从key集合field中取出value |
hmset key1 field1 value1 field2 value2 | 批量存储 |
hexists key field | 查看hash表是否存在field |
hkeys key | 列出key对应的所有field |
hvals key | 列出key对应的所有value |
hgetall key | 列出key对应的所有field-value |
hincrby key field increment | 为key-field对应的value增加increment |
hsetnx key field value | 为key-field对应的value赋值,当且仅当域field不存在 |
6)、zset
①无重复元素
每个成员关联一个评分(score,从低到高排序),评分可以重复
添加相同元素不同分数时,会将分数替换掉
添加相同分数不同元素时,排在后面
②指令:
指令 | 功能 |
---|---|
zadd key score1 value1 score2 value2 | 添加多个元素 |
zrange key start stop | 返回下标在start-stop中的元素 |
zrangebyscore key min max | 返回score值介于min和max之间 |
zrevrangebyscore key max min | 同上,从大到小 |
zincrby key increment value | 为元素的score增increment |
zrem key value | 删除该集合下,指定值的元素 |
zcount key min max | 统计该集合分数区间内的数 |
zrank key value | 返回该值在集合中的排名,从0开始 |
Jedis来连接Redis
1)、导包
jedis、commons-pool2(连接池)
2)、连接
Jedis jedis = new Jedis(“IP”,6379);
使用String result = jedis.ping()来获取连接状态,返回PONG成功
通过方法来进行操作
3)、以集群的方法操作jedis
new JedisCluster(Set<HostAndPost> nodes>:
nodes中为某一个服务端的IP和PORT