之前写的两篇关于redis的文章,都没有解释redis是什么,今天在这里简单的说一下。
一、redis的介绍(借鉴百度的解释)
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis是一个key-value存储系统。存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集、并集和差集以及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步(在后边我会给出redis配置主从同步的步骤)。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。安装出现如下错误:
注意:make指令是需要linux下安装gcc的 如果没有gcc可以尝试安装
yum -y install gcc
安装gcc之后问题解决
4、redis测试:
开启服务:src/redis-server
连接测试:src/redis-cli
注意:远程连接redis的时候,需要修改配置文件redis.conf
启动的时候需要指定配置文件:src/redis-server redis.conf 这样才能生效
5、连接reids的代码:
public class RedisPool { private static JedisPool pool; private static final Log logger = LogFactory.getLog(RedisPool.class); // 静态代码初始化池配置 static { try { Properties props = new Properties(); props.load(RedisPool.class.getClassLoader().getResourceAsStream("redis.properties")); // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle"))); config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn"))); // 根据配置实例化jedis池 pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port"))); System.out.println("redis池配置成功"); } catch (IOException e) { e.printStackTrace(); } } /** 获得jedis对象 */ public static Jedis getJedisObject() { return pool.getResource(); } /** 归还jedis对象 */ public static void recycleJedisOjbect(Jedis jedis) { pool.returnResource(jedis); } private static final Jedis jedis = getJedisObject(); /** * 传入参数key,基站ID * @param key * @return */ public List<String> getList(String key){ List<String> list = new ArrayList<String>(); HashSet<String> set = new HashSet(jedis.smembers(key)); Iterator<String> it=set.iterator() ; while(it.hasNext()){ String str=it.next(); list.add(str); } return list; } /** * 获取目标用户的号码 * @param key * @return */ public List getHashList(String key){ List<String> list = new ArrayList<String>(); HashSet<String> set = new HashSet<String>(jedis.hkeys(key)); Iterator<String> it = set.iterator() ; while(it.hasNext()){ String keyStr = it.next(); String value = jedis.hget(key, keyStr); list.add(keyStr + " " + value); } return list; } /** * 更新redis的数据 * @param hkey * @param key * @param value */ public void update(String hkey, String key, String value){ jedis.hset(hkey, key, value); jedis.save(); } /** * 删除一条记录 * @param hkey * @param key */ public void delete(String hkey, String key){ jedis.hdel(hkey, key); } /** * 根据key获取value的值 * @param hkey * @param key * @return */ public String getValue(String hkey, String key){ return jedis.hget(hkey, key); } /** * 根据key判断时候存在 * @param hkey * @param key * @return */ public Boolean isExists(String hkey, String key){ return jedis.hexists(hkey, key); } public static void main(String[] args) { RedisPool redisPool = new RedisPool(); // jedis.flushDB(); System.out.println(redisPool.getHashList("activityInfo")); System.out.println(redisPool.getHashList("41132_user")); System.out.println(redisPool.getHashList("41132_lac")); System.out.println(redisPool.getHashList("41132_state")); System.out.println(redisPool.getHashList("resultUser")); } }配置文件:
#*****************jedis连接参数设置*********************# #redis服务器ip # #redis.ip=127.0.0.1 redis.ip=134.192.68.84 #54.193.34.159 #redis159.dwnews.net #redis服务器端口号# #redis.port=6379 redis.port=2181 #************************jedis池参数设置*******************# #redis超时时间 redis.timeOut=30000 #jedis的最大分配对象# jedis.pool.maxActive=3000 #jedis最大保存idel状态对象数 # jedis.pool.maxIdle=300 #jedis池没有对象返回时,最大等待时间 # jedis.pool.maxWait=1500 #jedis调用borrowObject方法时,是否进行有效检查# jedis.pool.testOnBorrow=true #jedis调用returnObject方法时,是否进行有效检查 # jedis.pool.testOnReturn=true三、配置Redis主从服务器
步骤一:配置主从服务器设置1)修改主服务器/etc/redis/6379.conf配置文件 requirepass 123456 //设置服务器密码 修改主服务器的启动脚本 /etc/init.d/redis_6379 $CLIEXE –a 123456 –p $PEDISPORT shutdown2)修改从服务器/etc/redis/6379.conf配置文件 slaveof 192.168.4.10 6379 //从服务器的ip和端口号,主动同步主服务器的数据 masterauth redis123 //主从认证的密码 requirepass 123456 //设置服务器密码 修改从服务器的启动脚本 /etc/init.d/redis_6379 $CLIEXE –a 123456 –p $PEDISPORT shutdown