0%

redis笔记

String

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
set key value   

get key

getset key value #如果key存在,则返回key原来的value并且把新的value存进去(替换)

incr key #key的值是数字,每次加1

incrby key increment #key的值是数字,每次加increment

decr key # key是数字,每次减一

decrby key increment #key的值是数字,每次减increment

append key value #key存在,在key的原value后追加value

List

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lpush key value1 value2 ...  #倒序(每次都从头加)将value1、value2存进key

rpush key value1 value2 ... #顺序(每次从最后加)将value1、value2存进key

lrange key start end # 返回第start到end的value(从0开始)0 -1 返回所有

lpushx key value #key存在,在key中value的开头把value加进去

rpushx key value #key存在,在key中value的最后把value加进去

lpop key #删除第一个value并将其返回

rpop key #删除最后一个value并将其返回

rpoplpush key1 key2 #将key1最后的一个value加进key2中(加进key2中的操作是lpush)

llen key #返回key中value的数量

lset key index value #将key中第index个的值替换为value(index为正数就从头数第index个value,为负数就是从最后往前数第index个值)

lrem key count value #删除count个值为value的值 count为正是从头删,为负是从最后删

linsert key before | after value1 value2 #在value1之前或之后插入value2

set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
add key member1 member2 ...  #将member1 member2 ...添加到key

smembers key #查看key中的所有值

scard key #返回key中member的数量

sismember key member #判断key中时候有member,如果有返回1,没有返回0

srem key member1 member2 ... # 删除key中的member1、member2...

srandmember key #从key中随机抽取一位幸运member

sdiff key1 key2 #如果某值在key1中但是不在key2中,则返回它

sdiffstore key1 key2 key3 # 如果某值在key2中但是不在key3中,把它装进key1

sinter key1 key2 #如果某值同时在key1和key2中,则返回它

sinterstore key1 key2 key3 # 如果某值同时在key2和key3中,则把它装进key1中

sunion key1 key2 #返回key1和key2中的所有值,同时去重复

sunion key1 key2 key3 #将key1和key2中的所有值放到一块,然后去重复放到key1中

sortedset

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
zadd key score1 member1 score2 member2 ... #给member1和member2各自加上一个score(数字排序所用) 然后把它们加到key中

zcard key # 获取key中的成员数量

zcount key min max #获取score在min和max中的成员数量(包括min和max)

zincrby key score member #如果member在key中则给member原来的score加上参数score然后存入key中,如果member不存在,则将score member直接存入key中

zrange key min max # 返回score在min和max中的所有成员(包括min和max)

zrangebyscore key min max # 返回score在min和max之间的成员(包括max不包括min)

zrank key member #返回member在key中的位置

zrem key member1 member2 ... #删除member1 member2 ...

zscore key member # 返回指定成员的score

hash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hset key field1 value1 field2 value2 ...#将field1/value1、field2/value2... 按顺序存进key中

hgetall key # 获取key中的所有键值对

hget key field # 获取key中field的value值

hmet key field1 value1 field2 value2 ...# 同hset

hmget key field1 field2 ... #获取field11、field2...的value值

hexists key field #判断field是否在key中,是返回1,否返回0

hlen key #获取key中filed的数量

hincrby key field value #给key中的field加上value(数字)

事务

1
2
3
multi   #开启事务
exec #提交事务
discard #回滚事务

依赖

1
2
3
4
5
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

连接池配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 <!-- 创建连接池属性配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="10"/>
<!-- 空闲连接数 -->
<property name="maxIdle" value="2"/>
<!-- 设置链接池的连接耗尽时,是否等待 -->
<property name="blockWhenExhausted" value="true"/>
<!-- 最大等待时间 -->
<property name="maxWaitMillis" value="30000"/>
<!-- 获取到连接时,是否检查链接的有效性 -->
<property name="testOnBorrow" value="true"/>
</bean>

<!-- 创建jedispool -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close">
<!-- 池的属性 -->
<constructor-arg name="poolConfig" ref="poolConfig"/>
<!-- redis主机地址 -->
<constructor-arg name="host" value="10.10.22.189"/>
<!-- redis主机端口 -->
<constructor-arg name="port" value="6379"/>
<!-- redis密码 -->
<constructor-arg name="password" value="123456"/>
<!-- 可以选择redis数据库(要选择数据库,必须开启了密码) -->
<constructor-arg name="database" value="0"/>
<!-- 链接超时时间 -->
<constructor-arg name="timeout" value="30000"/>
</bean>

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-redis.xml");
//自动装载 @Autoware
JedisPool pool = context.getBean(JedisPool.class);
Jedis client = pool.getResource();

client.lpush("l111", "aaa","bbb","ccc","ddd","aaa");
List<String> list = client.lrange("l111", 0, -1);
for (String s : list) {
System.out.println(s);
}
client.close();
pool.close();
}

操作java对象

1、通过对象流转换成字节数组输出流输出保存到redis数据库中

2、将对象属性转换成json或者其他字符串类型数据并保存到redis数据库中

赏口饭吃吧!