1.window下使用
下载地址:
然后运行redis-server.exe
启动好服务如下,
2.打开cmd窗口,cd到目录C:\Users\Administrator\Desktop\redis-2.4.5-win32-win64\32bit
执行:redis-cli.exe(客户端)
3.redis命令-数据存储介绍
官网的例子最好照着做一遍,能快速学会redis,除了最后Bitmap、lexicograpical这些比较难懂,而且也不见得常用到,而外基本都是比较通俗易懂的
4.Java访问redis-jedius
jedis-2.7.2.jar下载地址:
给出一个jedius-api:
再给一个Java封装类:
import java.util.ArrayList;import java.util.List;import java.util.Set;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;public class RedisTool { private static String redisHost = "127.0.0.1"; private static JedisPool pool = new JedisPool(redisHost); // get命令,数据库默认选择序号为0 public static Object get(String key) { Jedis jedis = null; try { jedis = pool.getResource(); byte[] data = jedis.get(key.getBytes()); if (data == null || data.length <= 0) { return null; } return SerializeUtil.unserialize(data); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // get命令,第二个参数为选择数据库 public static Object get(String key, int dbIndex) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.select(dbIndex); byte[] data = jedis.get(key.getBytes()); if (data == null || data.length <= 0) { return null; } return SerializeUtil.unserialize(data); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // set命令,默认选择序号为0 public static void set(String key, Object value) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.set(key.getBytes(), SerializeUtil.serialize(value)); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // set命令,第二个参数为选择数据库 public static void set(String key, Object value, int dbIndex) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.select(dbIndex); jedis.set(key.getBytes(), SerializeUtil.serialize(value)); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // hset命令,就是普通的Java-Map对象形式,key标识不同的Map对象,field为指定Map对象的键值 public static void hset(String key, String field, Object value) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.hset(key.getBytes(), field.getBytes(), SerializeUtil.serialize(value)); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // hget,就是获取指定key值的Map对象的field字段值 public static Object hget(String key, String field) { Jedis jedis = null; try { jedis = pool.getResource(); byte[] data = jedis.hget(key.getBytes(), field.getBytes()); if (data == null || data.length <= 0) { return null; } return SerializeUtil.unserialize(data); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // remove为移除一条记录 public static void remove(String key) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.del(key.getBytes()); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // redis实现的自动+1序列获取 public static long getAutoId(String key) { Jedis jedis = null; long id = 1; try { jedis = pool.getResource(); id = jedis.incr(key.getBytes()); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } return id; } // list-push,key标识某list对象,而且是left-push public static void lpush(String key, Object value) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.lpush(key.getBytes(), SerializeUtil.serialize(value)); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // list-push,key标识某list对象,而且是right-push public static void rpush(String key, Object value) { Jedis jedis = null; try { jedis = pool.getResource(); jedis.rpush(key.getBytes(), SerializeUtil.serialize(value)); } catch (Exception e) { throw new RuntimeException("Redis出现错误!", e); } finally { close(jedis); } } // 获取指定key值的list对象的所有元素 public static List
5.linux下安装redis
安装包为redis-3.0.4.tar.gz,给出下载地址:
先cd到/usr/local/,然后mkdir一个文件夹redis,之后把redis-3.0.4.tar.gz拷贝到/usr/local/redis
解压,执行tar -zxvf redis-3.0.4.tar.gz
之后cd到redis-3.0.4,执行make命令
然后执行make install命令
完成以后cd到redis-3.0.4,然后执行
[root@localhost redis-3.0.4]# redis-server redis.conf
启动redis服务,redis服务是部署在210.10.5.189上面,
ip为210.10.5.102的机器打开cmd窗口,cd到有redis-cli.exe的那个目录下,C:\Users\Administrator\Desktop\redis-2.4.5-win32-win64\32bit,然后执行redis-cli.exe -h 210.10.5.189 -p 6379,如下
跟windows上部署的没什么区别了。
6.还有几个补充说明
6.1命令
flushdb--删除当前数据库中的所有Keyflushall--删除所有数据库中的key
6.2 linux-redis查看启动进程:
ps -ef | grep redis关闭linux的redis服务则kill进程即可
6.3 redis服务后台启动,vi redis.conf修改如下,
################################ GENERAL ###################################### By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize no# When running daemonized, Redis writes a pid file in /var/run/redis.pid by# default. You can specify a custom pid file location here.pidfile /var/run/redis.pid# Accept connections on the specified port, default is 6379.# If port 0 is specified Redis will not listen on a TCP socket.port 6379# TCP listen() backlog.
设置daemonize no->daemonize yes
6.4 linux设置随机启动
vi /etc/rc.local
在最后面一行添加:/usr/local/redis/redis-3.0.4/src/redis-server /usr/local/redis/redis-3.0.4/redis.conf
6.5 配置redis最大分配内存
vim redis.conf
修改maxmemory <bytes>为maxmemory <2147483648>
为防止内存全部被redis耗光,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,也会从free-list里清除一些key-value。当以上方法都没有效果,那redis就不再支持写入操作(如set,lpush),但不影响读操作如get。(maxmemory配置默认是注释掉的,没限制,跟RAM相同)
6.6 存储策略的配置
这里官方解释得很清楚,如果需要修改后立即存储则第一条记录修改为
save 1 1
6.7 安全密码配置(linux下生效,windows下无效,已测试确认)
默认redis是不需要密码的,如果需要设置密码为***则这里改配置为
requirepass ***
另外有2篇博客也不错,主要介绍redis数据结构:
7.redis主从配置
8.spring-session-data-redis 把session存到redis里面加快访问速度
http://blog.csdn.net/xiejx618/article/details/42919327
9.conf配置