您的位置:首页 > 数据库 > Redis

Redis与框架整合,存储 字符串,存储Hash,list,Set,Sorted-Set

2018-01-17 17:48 369 查看

Redis与框架整合

添加日志记录(mybatis-config.xml)

<settings>

        <setting name="logImpl" value="STDOUT_LOGGING"/>

</settings>

Spring整合jedispool,通过构造方法注入。

<bean
class="redis.clients.jedis.JedisPool"
id="jedisPool"
>
    <constructor-arg
name="host"
value="192.168.147.130"
></constructor-arg>
    <constructor-arg
name="port"
value="6379"
></constructor-arg>
</bean>
 

写一个redisCache工具类

放缓存

取缓存

 

在controler中做测试

 

注意:如果要做跟新操作parseArray先转对象,添加完在转字符串,用于存储。
 

存储

字符串

127.0.0.1:6379> set nn 2
OK
127.0.0.1:6379> incr nn
(integer) 3
127.0.0.1:6379> get nn
"3"
127.0.0.1:6379> 
 
127.0.0.1:6379> set n2 java1234
OK
127.0.0.1:6379> incr n2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 
 
自减 decr
同上
127.0.0.1:6379> decr nn
(integer) 2
127.0.0.1:6379> decr n3
(integer) -1
 
扩展 
incrby
指定增量值
127.0.0.1:6379> incrby n3 8
(integer) 7
 
decrby
指定减量值
127.0.0.1:6379> decrby n3 5
(integer) 2
 
append
追加字符串
假如没定义
直接赋值
127.0.0.1:6379> append s1 jj
(integer) 2
127.0.0.1:6379> get s1
"jj"
127.0.0.1:6379> append s1 bb
(integer) 4
127.0.0.1:6379> get s1
"jjbb"

哈希

存储Hash
 String key和String Value的Map容器
 
每一个Hash可以存储4294967295个键值对
 
存储Hash常用命令:
赋值  
取值
删除
增加数字
判断字段是否存在
获取hash属性个数
获取hash所有属性名称
 
定义h1
以及username和password字段 值分别是java1234
123456
 
hget单个字段设置
 
127.0.0.1:6379> hset h1 username java1234
(integer) 1
127.0.0.1:6379> hset h1 password 123456
(integer) 1
127.0.0.1:6379> hget h1 username
"java1234"
127.0.0.1:6379> hget h1 password
"123456"
 
hmset
多个字段一起设置
127.0.0.1:6379> hmset h2 username open1111 password 23456
OK
127.0.0.1:6379> hmget h2 username
1) "open1111"
127.0.0.1:6379> hmget h2 password
1) "23456"
127.0.0.1:6379> hmget h2 username password
1) "open1111"
2) "23456"
 
127.0.0.1:6379> hgetall h2
1) "username"
2) "open1111"
3) "password"
4) "23456"
 
hdel删除属性
可以一次删除一个或者多个
127.0.0.1:6379> hdel h2 username password
(integer) 2
127.0.0.1:6379> hgetall h2
(empty list or set)
 
hincrby增加数字
127.0.0.1:6379> hset h1 age 20
(integer) 1
127.0.0.1:6379> hincrby h1 age 5
(integer) 25
 
hexists判断字段是否存在
1表示存在
0表示不存在
127.0.0.1:6379> hexists h1 age
(integer) 1
127.0.0.1:6379> hexists h1 age2
(integer) 0
 
hlen获取hash属性个数
127.0.0.1:6379> hlen h1
(integer) 3
127.0.0.1:6379> hlen h2
(integer) 0
 
hkeys获取所有属性名称
127.0.0.1:6379> hkeys h1
1) "username"
2) "password"
3) "age"
127.0.0.1:6379> hkeys h2
(empty list or set)
 
hvals获取所有属性值
127.0.0.1:6379> hvals h1
1) "java1234"
2) "123456"
3) "25"
127.0.0.1:6379> hvals h2
(empty list or set)
127.0.0.1:6379> 

List

存储list:
ArrayList使用数组方式
LinkedList使用双向链接方式
 
双向链接表中增加数据
双向链接表中删除数据
 
存储list常用命令
两端添加
两端弹出
扩展命令
 
lpush
方式添加
从左边开始添加
127.0.0.1:6379> lpush l1 a b c d
(integer) 4
127.0.0.1:6379> lpush l1 1 2 3 4
(integer) 8
 
lrange
获取指定方位的集合元素
 
从第1个开始 到倒数第一个 也就是最后一个 也就是 所有数据
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
8) "a"
 
获取从第1个到第6个集合元素
127.0.0.1:6379> lrange l1 0 6
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
 
rpush
从右端开始添加(一般人比较习惯这种方式)
127.0.0.1:6379> rpush l2 a b c d
(integer) 4
127.0.0.1:6379> rpush l2 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
8) "4"
127.0.0.1:6379> lrange l2 0 6
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
 
lpop
左侧弹出集合元素
rpop
右侧弹出集合元素
127.0.0.1:6379> lrange l2 0 -1
1) "b"
2) "c"
3) "d"
4) "1"
5) "2"
6) "3"
7) "4"
127.0.0.1:6379> rpop l2
"4"
127.0.0.1:6379> lrange l2 0 -1
1) "b"
2) "c"
3) "d"
4) "1"
5) "2"
6) "3"
 
llen查看元素个数
127.0.0.1:6379> llen l2
(integer) 6
 
lpushx
集合头部插入元素
127.0.0.1:6379> lpushx l2 xx
(integer) 7
127.0.0.1:6379> lrange l2 0 -1
1) "xx"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
 
 
 
rpushx
集合尾部插入元素
127.0.0.1:6379> rpushx l2 yy
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
1) "xx"
2) "b"
3) "c"
4) "d"
5) "1"
6) "2"
7) "3"
8) "yy"
 
lpush集合头部插入多个元素
127.0.0.1:6379> lpush l2 a1 a2 
(integer) 10
127.0.0.1:6379> lrange l2 0 -1
 1) "a2"
 2) "a1"
 3) "xx"
 4) "b"
 5) "c"
 6) "d"
 7) "1"
 8) "2"
 9) "3"
10) "yy"
 
127.0.0.1:6379> rpush l2 a3 a4
(integer) 12
127.0.0.1:6379> lrange l2 0 -1
 1) "a2"
 2) "a1"
 3) "xx"
 4) "b"
 5) "c"
 6) "d"
 7) "1"
 8) "2"
 9) "3"
10) "yy"
11) "a3"
12) "a4"
 
lrem
从指定方向删除指定个数的指定元素
先加点数据搞个新集合l3
127.0.0.1:6379> lpush l3 1 3 2 3 2 1 2 1 3
(integer) 9
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "1"
3) "2"
4) "1"
5) "2"
6) "3"
7) "2"
8) "3"
9) "1"
 
从左边开始删除2个1
127.0.0.1:6379> lrem l3 2 1
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "2"
3) "2"
4) "3"
5) "2"
6) "3"
7) "1"
 
从右边开始删除2个3
127.0.0.1:6379> lrem l3 -2 3
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "2"
3) "2"
4) "2"
5) "1"
 
删除所有2
127.0.0.1:6379> lrem l3 0 2
(integer) 3
127.0.0.1:6379> lrange l3 0 -1
1) "3"
2) "1"
 
lset
设置集合指定索引的值
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "d"
6) "c"
7) "b"
8) "a"
 
索引从0开始
127.0.0.1:6379> lset l1 3 xxxx
OK
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "xxxx"
5) "d"
6) "c"
7) "b"
8) "a"
 
linsert
在集合里插入指定元素
在xxxx元素之前插入aa
127.0.0.1:6379> linsert l1 before xxxx aa
(integer) 9
127.0.0.1:6379> lrange l1 0 -1
1) "4"
2) "3"
3) "2"
4) "aa"
5) "xxxx"
6) "d"
7) "c"
8) "b"
9) "a"
 
在xxxx元素之后插入bb
127.0.0.1:6379> linsert l1 after xxxx bb
(integer) 10
127.0.0.1:6379> lrange l1 0 -1
 1) "4"
 2) "3"
 3) "2"
 4) "aa"
 5) "xxxx"
 6) "bb"
 7) "d"
 8) "c"
 9) "b"
10) "a"
 
rpoplpush
把A集合尾部元素弹出并插入到B集合头部
127.0.0.1:6379> rpush l4 a b c
(integer) 3
127.0.0.1:6379> rpush l5 1 2 3
(integer) 3
127.0.0.1:6379> lrange l4 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange l5 0 -1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> rpoplpush l4 l5
"c"
127.0.0.1:6379> lrange l4 0 -1
1) "a"
2) "b"
127.0.0.1:6379> lrange l5 0 -1
1) "c"
2) "1"
3) "2"
4) "3"

Set

存储Set
 和List类型不同的是,Set集合中不允许出现重复的元素
 Set可包含的最大元素数量是4294967295
存储set常用命令:
添加/删除元素
获取集合中的元素
集合中的差集运算
集合中的交集运算
集合中的并集元算
扩展命令
 
sadd key member [member ...]
添加set元素
127.0.0.1:6379> sadd set1  a b c
(integer) 3
添加三个元素
smembers key
查看指定key集合元素
127.0.0.1:6379> smembers set1
1) "c"
2) "b"
3) "a"
 
127.0.0.1:6379> sadd set1 a d e
(integer) 2
127.0.0.1:6379> smembers set1
1) "c"
2) "d"
3) "b"
4) "a"
5) "e"
继续添加元素
发现 重复元素不再添加
 
srem key member [member ...]
删除元素
127.0.0.1:6379> srem set1 a d
(integer) 2
127.0.0.1:6379> smembers set1
1) "b"
2) "c"
3) "e"
删除两个元素
 
sismember key member
判断某个元素是否存在
返回1 表示存在 返回0表示不存在
127.0.0.1:6379> sismember set1 a
(integer) 0
127.0.0.1:6379> sismember set1 b
(integer) 1
 
sdiff计算差集
127.0.0.1:6379> sadd set2 a b c
(integer) 3
127.0.0.1:6379> sadd set3 b c d e
(integer) 4
127.0.0.1:6379> sdiff set2 set3
1) "a"
127.0.0.1:6379> sdiff set3 set2
1) "d"
2) "e"
我们发现
集合的顺序不同 结果不一样
根据前者参考
 
sinter计算交集
127.0.0.1:6379> sinter set2 set3
1) "c"
2) "b"
 
sunion计算并集
127.0.0.1:6379> sunion set2 set3
1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
 
scard计算元素总数
127.0.0.1:6379> smembers set1
1) "b"
2) "c"
3) "e"
127.0.0.1:6379> scard set1
(integer) 3
 
srandmember
随机取一个元素
127.0.0.1:6379> srandmember set1
"c"
127.0.0.1:6379> srandmember set1
"e"
 
sdiffstore
把差集结果存储到新集合中
127.0.0.1:6379> smembers set2
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> smembers set3
1) "c"
2) "e"
3) "d"
4) "b"
127.0.0.1:6379> sdiffstore r1 set2 set3
(integer) 1
127.0.0.1:6379> smembers r1
1) "a"
 
sinterstore
把交集结果存储到新集合中
127.0.0.1:6379> sinterstore r2 set2 set3
(integer) 2
127.0.0.1:6379> smembers r2
1) "c"
2) "b"
 
sunionstore把并集结果存储到新集合中
127.0.0.1:6379> sunionstore r3 set2 set3
(integer) 5
127.0.0.1:6379> smembers r3
1) "e"
2) "a"
3) "b"
4) "c"
5) "d"
 
存储Set使用场景
 跟踪一些唯一性数据
 用于维护数据对象之间的关联关系

sorted-set

存储Sorted-Set
Sorted-Set和Set的区别
 
Sorted-Set中的成员在集合中的位置是有序的
 
存储Sorted-set常用命令
添加元素
获得元素
删除元素
范围查询
扩展命令
 
zadd
添加元素 里面包括评分和值
127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3
我们添加集合sort1
元素是a,b,c
评分分别是5,4,6
集合里的排序是根据评分从小到大排序的;
 
zrange是查找元素
-1代表是最后一个
127.0.0.1:6379> zrange sort1 0 -1
1) "b"
2) "a"
3) "c"
 
假如我们继续添加元素
这里分两种情况
假如次元素集合里面已经有了,则覆盖
我们继续添加b
此时评分改成7 
127.0.0.1:6379> zadd sort1 7 b
(integer) 0
通过zscore
获取b的评分
127.0.0.1:6379> zscore sort1 b
"7"
发现已经修改了;
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
假如添加的元素不在集合里,则添加进去
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
 
删除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "d"
 
zcard
查看集合里的元素个数
127.0.0.1:6379> zcard sort1
(integer) 3
 
withscores  把评分也显示出来
127.0.0.1:6379> zrange sort1 0 -1 withscores 
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"
 
zrevrange
降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"
 
我们再加两个元素
127.0.0.1:6379> zadd sort1 10 e  5 f
(integer) 2
 
zremrangebyrank 根据排名来删除元素
 删除3个
127.0.0.1:6379> zremrangebyrank sort1 0 2
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
 
再添加元素
127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
 1) "d"
 2) "9"
 3) "e"
 4) "10"
 5) "f"
 6) "11"
 7) "g"
 8) "16"
 9) "h"
10) "18"
 
zremrangebyscore
根据具体评分范围来删除元素
127.0.0.1:6379> zremrangebyscore sort1 10 16
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
 
再添加元素
127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
 1) "d"
 2) "9"
 3) "h"
 4) "18"
 5) "i"
 6) "20"
 7) "j"
 8) "23"
 9) "k"
10) "30"
 
zrangebyscore
根据评分范围来查找元素
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 
1) "h"
2) "18"
3) "i"
4) "20"
5) "j"
6) "23"
 
limit
限定查找起始 类似分页
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
1) "h"
2) "18"
3) "i"
4) "20"
 
zincrby
给指定元素加分
127.0.0.1:6379> zincrby sort1 5 h
"23"
 
127.0.0.1:6379> zrange sort1 0 -1 withscores
 1) "d"
 2) "9"
 3) "i"
 4) "20"
 5) "h"
 6) "23"
 7) "j"
 8) "23"
 9) "k"
10) "30"
 
zcount
查找指定评分范围的元素个数
127.0.0.1:6379> zcount sort1 20 23
(integer) 3
 
Sorted-Set使用场景
大型在线游戏积分排行榜
构建索引数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐