(1)redis存储的是键值对,key是String类型的,value有5种类型,分别是String,Hash({uname:"xiaohuang",age:"20"}相当于javabean),List([1,2.3.4] 链表),Set([a,b,c.d] HashSet),有序的Set集合({10000 aa,5000 bb,100 cc} 排行榜)。
(2)当redis的value为String类型时,可容纳的最大长度为512M。字符串在Redis中是二进制安全的,因为数据的编解码只发生在客户端。
(3)value为String类型的操作命令:
赋值:set key value
取值:get key
删值:del key
(4)扩展命令:
取值再赋值:getset key value
自增1:incr key (value必须是整型数字的字符串,否则会报错,如果不存在该key,默认value为0)
自减1:decr key (value必须是整型数字的字符串,否则会报错)
拼接字符串:append key value (返回value的长度)
自增n: incrby key n
自减n:decrby key n
(5)String使用环境:
json格式是字符串的,例如查询数据库返回的List<product>转成json格式[{pname:"",pname:"",pname:""}]
二.value为hash
(1)赋值:hset key field value (存储具有一个字段和value)
hmset key field1 value1 field2 value2 field3 value3(存储多个字段和多个value)
(2)取值:hget key field (取出一个字段对应的value)
hmget key fields (取出多个字段其对应的value)
hgetall key (取出所有字段及其对应的value)
(3)删值:hdel key fields(删除一个或多个字段及其对应的value)
del key(删除该key对应的所有字段及其value)
(4)扩展命令:
hincrby key field increment (字段对应值是数字的自增n)
hexits key field (是否存在该字段)
hlen key (该key对应的value有多少个字段)
hkeys key (列出该key对应的所有字段)
hvals key (列出该key对应的所有字段对应的所有value)
三.在myeclipse使用Jedis连接redis,需要两个jar包:jedis-2.7.3.jar和commons-pool2-2.3.jar
Jedis jedis = new Jedis(host,port);
Jedis jedis = new Jedis(host,port);
jedis.set(key,value);
遇到问题1:通过/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT,/etc/rc.d/init.d/iptables save已经开放了6379端口,可运行时还是出现连接异常
解决方法:经过查找发现redis.conf配置文件中已经设定绑定本ip才可访问,所以修改redis.conf,vim redis.conf 将band 127.0.0.1注释掉,即#band 127.0.0.1
问题2:再次运行程序,出现异常,DENIED Redis is running in protected mode
解决方法:因为上面的解决方法,导致redis开启了保护模式,再次修改redis.conf文件,将里面的protected-mode yes改为protected-mode no,再次运行程序可以正常运行了
通过Jedis连接池获取jedis,JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.set...();
JedisPool jedisPool = new JedisPool(jedisPoolConfig,host,port);
Jedis jedis = jedisPool.getResource();
String value = jedis.get(key);
自定义JedisUtil:public static final JedisPool POOL;
static{
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.set...();
POOL = new JedisPool(jedisPoolConfig,host,port);
}
public static Jedis getJedis(){
return POOL.getResource();
}