一、基础简介 
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 
二、redis主要文件功能介绍 
**redis-benchmark:用来测试redis性能 
redis-server:用来启动redis服务 
redis-cli:客户端连接redis服务 
redis.conf:redis的配置都在该文件汇总,下面主要介绍redis.conf的配置 
redis.conf配置文件说明 
dae**monize:是否以后台daemon的方式运行,如果以后台daemon的方式运行会在redis.pid文件写入pid 
pidfile:指定redis.pid文件的位置 
port:redis监听的端口号 
timeout:请求超时时间 
loglevel:日志信息的级别 
logfile:日志文件的位置 
databases:开启数据库的数量,默认是0,可以使用 SELECT 命令来切换数据库 
Save the DB on disk(save  ):多少秒,多少个keys改变后存储到disk 
rdbcompression:是否使用压缩 
dbfilename:数据库快照名,不包含路径 
dir:数据库快照的保存路径 
slaveof  :使用slaveof 把一个Redis实例设置成为另一个Redis Server的从库。配置仅对当前Slave有效 
masterauth :如果master有密码保护,则需要进行密码校验,否则master会拒绝slave的请求 
requirepass:在客户端执行任何命令之前需要进行密码验证 
maxclients:最大客户端连接数,0为没有上限 
maxmemory:最大可用内存,如果超过redis会试图删除即将过期的keys,而保护还有很长生命周期的keys 
maxmemory-policy: 
 volatile-lru -> 使用LRU算法来删除过期的set 
 allkeys-lru -> 删除任何遵循LRU算法的key 
 volatile-random ->随机地删除过期set中的key 
 allkeys->random -> 随机地删除一个key 
 volatile-ttl -> 删除最近即将过期的key(the nearest expire time (minor TTL)) 
 noeviction -> 根本不过期,写操作直接报错 
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。 
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步) 
三、redis常用命令 
启动连接命令 
1、redis-server redis.conf 启动redis服务 
2、redis-cli.exe -h [redis server IP] -a [redis password]或者redis-cli.exe -h [redis server IP] 然后再执行auth [redis password] 客户端连接redis服务 
Java数据操作命令 
1、set(key,value)与get(key),mset(key,value,…,key,value)与mget(key,key,…,key,key) 
set用来存放单个String类型,例如:
jedis.set("110", "匪警");
jedis.set("119", "火警");
jedis.set("120", "急救中心");
对应获取String类型数据使用get,例如:
jedis.get("110");
jedis.get("119");
jedis.get("120");mset用来存放多个String类型,例如: 
jedis.mset(“110”,”匪警”,”119”,”火警”,”120”,”急救中心”); 
对应获取多个String类型使用mget,例如; 
jedis.mget(“110”,”119”,”120”) 
2、lpush(key,value)与lrange(key,start,end) 
lpush用来存放List类型。例如:
List<Region> list = service.loadRegion();
   String key = "regionList";
   for(int i=0;i<list.size();i++){
    jedis.lpush(key.getBytes(), SerializeUtil.serialize(list.get(i)));
   }
对应获取List类型数据使用lrange
List<byte[]> lb = jedis.lrange("regionList".getBytes(), 0, -1);//0代表从第一个开始,-1代表截止到倒数第一个,-2代表倒数第二个3、hmset(key,value)与hmget(key) 
hmset用来存放HashMap类型,例如:
Map<String,String> loginMap = new HashMap<String,String>();
  loginMap.put("userName", "triger");
  loginMap.put("password", "DseowXduow");
  String mapKey = "loginMap";
  jedis.hmset(mapKey,loginMap);
对应获取HashMap数据使用hmget,例如:
String userName = String.valueOf(jedis.hmget("loginMap", "userName"));
String password = String.valueOf(jedis.hmget("loginMap", "password"));4、sadd(key,value)与smembers(key) 
sadd用来存放Set类型,例如:
jedis.sadd("setKey", "setElements1");
jedis.sadd("setKey", "setElements2");
jedis.sadd("setKey", "setElements3");
对应获取Set数据使用smembers,例如:
Set<String> set = jedis.smembers("setKey");5、zadd(key,score,value)与zrange(key,start,end) 
zadd用来存放sorted set,例如:
jedis.zadd("zset", 1.0, "zsetValue1");
jedis.zadd("zset", 2.0, "zsetValue2");
jedis.zadd("zset", 3.0, "zsetValue3");对应获取sorted set使用zrange,例如:
Set<String> set = jedis.zrange("zset", 0, -1);后续我会继续更新我的Redis学习之路
原文地址:http://blog.csdn.net/fuyuwei2015/article/details/45724259