一,键值类型
String字符类型
map散列类型
list列表类型
set集合类型
sortedset有序集合类型
1,String
赋值:SET key value 例:set str "hello"
取值:GET key
取值并赋值:GETSET key value
设置/获取多个值:
MSET key value [key value …]
MGET key [key …]
删除:DEL key
递增数字:INCR key
增加指定的整数:incrby key num
递减:decr key
递减指定的证书:decrby key num
获取字符串长度:strlen key
追加字符串:append key value 例:append str "hello"
应用:存储商品id,自增主键
2,hash叫散列类型
赋值:HSET key field value
例:hset user username lisi
hset user age 20 username zhangsan
取值:HGET key //一次只能取一个
例:hget user age
一次获取多个字段值:HMGET key field [field ...]
获取所有字段:HGETALL key
删除字段:HDEL key field [field ...]
增加数值:HINCRBY key field num 例:HINCRBY user age 2
判断字段是否存在:HEXISTS key field
应用:存储商品信息
3,list
Redis的list是采用来链表来存储的
向列表左边增加元素:LPUSH key value [value ...] 例:lpush list:1 1 2 3
向列表右边增加元素:RPUSH key value [value ...]
查看列表:
LRANGE key start stop 索引从0开始。
索引可以是负数,如:“-1”代表最后边的一个元素。
例:lrange list:1 0 2
lrange list:1 0 -1
从列表两端弹出元素:LPOP key / RPOP key
获取列表中元素的个数:LLEN key
应用:商品评论列表
4,Set
无序、不可重复
增加/删除元素:
SADD key member [member ...]
SREM key member [member ...]
获得集合中的所有元素:SMEMBERS key
判断元素是否在集合中:SISMEMBER key member
5,Sortedset有序集合
增加元素
ZADD key score member [score member ...]
例: zadd scoreboard 80 zhangsan 89 lisi 94 wangwu
获取元素的分数
ZSCORE key member
例:zscore scoreboard lisi
删除元素
ZREM key member [member ...]
例:zrem scoreboard lisi
获得排名在某个范围的元素列表
//按照元素分数从小到大
ZRANGE key start stop [WITHSCORES]
zrange scoreboard 0 2
//按照元素分数从大到小
//如果需要获得元素的分数的可以在命令尾部加上WITHSCORES参数
ZREVRANGE key start stop [WITHSCORES]
zrevrange scoreboard 0 1 WITHSCORES
获取元素的排名
//从小到大
ZRANK key member
//从大到小
ZREVRANK key member
应用:商品销售排行榜
6,常用命令
exists,确认某一个key是否存在
exists age
keys,返回满足给定pattern 的所有key
keys mylist*
del,删除一个可以,`del age`
rename,重命名key,`rename age age_new`
type,返回key的类型,`type mylist`
二,与spring整合
1,applicationContext.xml
<!-- 连接池配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="30" />
<!-- 最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="1024" />
<!-- 释放连接的扫描间隔(毫秒) -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 连接最小空闲时间 -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
<property name="softMinEvictableIdleTimeMillis" value="10000" />
<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
<property name="maxWaitMillis" value="1500" />
<!-- 在获取连接的时候检查有效性, 默认false -->
<property name="testOnBorrow" value="true" />
<!-- 在空闲时检查有效性, 默认false -->
<property name="testWhileIdle" value="true" />
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="blockWhenExhausted" value="false" />
</bean>
<!-- redis集群 -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg index="0">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7001"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7002"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7003"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7004"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7005"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="192.168.101.3"></constructor-arg>
<constructor-arg index="1" value="7006"></constructor-arg>
</bean>
</set>
</constructor-arg>
<constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>
</bean>
2,测试代码
private ApplicationContext applicationContext;
@Before
public void init() {
applicationContext = new ClassPathXmlApplicationContext(
"classpath:applicationContext.xml");
}
// redis集群
@Test
public void testJedisCluster() {
JedisCluster jedisCluster = (JedisCluster) applicationContext
.getBean("jedisCluster");
jedisCluster.set("name", "zhangsan");
String value = jedisCluster.get("name");
System.out.println(value);
}