0.安装redis  


 tar -zxvf redis-3.2.1.tar.gz 解压 

 mv redis-3.2.1 redis 

 mv redis /usr/local 

 cd /usr/local/redis 

 make 

 #可使用root用户执行`make install`,将可执行文件拷贝到/usr/local/bin目录下。这样就可以直接敲名字运行程序了。 
make install

 

 1.启动redis 

 redis-server  配置文件地址 

 查询是否启动 

 ps -ef|grep redis 

 客户端链接redis 

 redis-cli -p 6379 



 2.选择数据库(默认16个数据库) 

 select 3   表示选择第4个数据库 

 set k1 33  设置k1的值为33到数据库,如果已经有k1就覆盖 

 get k1     返回数据 

 DBSIZE     查看当前库key数目 

 keys *     列出当前库所有key 

 keys k?    可以通配符 

 FLUSHALL   清除所有数据库的key 

FLUSHDB    删除当前数据库数据

3.redis的5大结构:string map list set sortset
 exists key 判断key是否存在
 move k3 2把k3移到3号库
 ttl k1 返回k1的有效时间,-1表示永远不过期
 expire k3 10 有效时间10秒,过期get返回null
 del k3 删除k3
 type k1 返回key类型
 lpush mylist 1 2 3 4 5 输入一个list
 lrange mylist 0 -1 堆模式返回所有数据


 4:string方法
 append k1 123 后面叠加
 strlen k1 返回长度

 (以下4个只能用于数字)
 incr k1 递增
 incrby k1 3 每次3的速度递增
 decr k1递减
 decrby k1 2 每次2的速度递减 getrange k1 0 -1 返回所有字符串
 getrange k1 2 5 返回2到5的字符串
 setrange k1 0 xxx 第0位开始覆盖3个原始数值

 setex k1 10 zhi 设置存活时间为10秒,值为zhi
 setnx k1 如果不存在设置k1

 mset k1 2 k2 4 k3 s 批量设置
 mget k1 k2 k3 批量获取
 msetnx k1 5 k8 5 批量修改,但是如果有一个没有则都不成功
代码常用:
 

  
  Map<String,String> maps = new HashMap<String, String>();
        maps.put("multi1","multi1");
        maps.put("multi2","multi2");
        maps.put("multi3","multi3");
        template.opsForValue().multiSet(maps);
        List<String> keys = new ArrayList<String>();
        keys.add("multi1");
        keys.add("multi2");
        keys.add("multi3");
        System.out.println(template.opsForValue().multiGet(keys));
 
 
 



 5.list方法 

 lpush list01  1 2 3 4 左边开始插入一个list 

 rpush list01  1 2 3 4 右边插入一个list 
linsert list01 before xx java 列表的xx值位置处之前插入java
linsert list01 after xx oracle 列表的xx值位置处之后插入oracle
lpop list01 出栈顶一个
 rpop list01 出栈底一个lrem list01 2 3  删除列表中有值为3的前2个
rpoplpush list01 list02 把第一个列表的最先进的数据取出放在第二列表
ltrim list01 2 4 把列表中2到4的数据取出在赋给自己
lset list01 3 5 在列表中第3个位置修改值为5
 lindex list01 3 返回角标第3个元素
 llen list01 返回长度
 lrang list01  0 -1  返回先进后出数据常用代码:
 

  
  String[] stringarrays = new String[]{"1","2","3"};
        template.opsForList().leftPushAll("listarray",stringarrays);
        System.out.println(template.opsForList().range("listarray",0,-1));
 
 
 
 


 
 
 
 
List<Object> strings = new ArrayList<Object>();
        strings.add("1");
        strings.add("2");
        strings.add("3");
        template.opsForList().leftPushAll("listcollection4", strings); 
 6.set方法
sadd s1 1 1 2 2 3 3 把数据写入set集合由于不能重复所有写入的其实只有1  2 3
smembers s1 返回所有数据
sismember s1 1 判断1是否是成员
scard s1 返回元素个数
srem s1 2 删除集合中2元素
srandmember s1 3 在集合中随机返回3个元素
spop s1 随机出栈一个元素
smove s1 s2 3 把s1中的3移动到s2中
sdiff  s1 s2 实现差集
sinter s1 s2实现交际
sunion s1 s2实并集
常用方法:
String[] strarrays = new String[]{"strarr1","sgtarr2"};
template.opsForSet().add("setTest", strarrays); 


7.hash方法
hset h1 id 11 把键值对id为11写入h1中
hget h1 id 取出h1中键为id的值
hmset h1 id 11 name 22 age 33 对h1设置id,name,age的键值对
hmget h1 id name age 返回多个值,返回的只有值没有key
hgetall h1 返回所有的key和value
hdel h1 name 删除h1中的name
hlen h1 返回h1的元素个数
hexists h1 id 判断是否有id的key
hkeys h1 返回所有的key
hvals h1 返回所有的value
hincryby h1 age 2 对h1中age加2
hincrbyfloat h1 age 2.3 增加小数
hsetnx h1 age 26 如果不存在就添加元素
常用代码:
 

  
  Map<String,Object> testMap = new HashMap();
        testMap.put("name","jack");
        testMap.put("age",27);
        testMap.put("class","1");
        template.opsForHash().putAll("redisHash1",testMap);
 
 
 

  
  List<Object> kes = new ArrayList<Object>();
        kes.add("name");
        kes.add("age");
        System.out.println(template.opsForHash().multiGet("redisHash",kes));
 
 
 



8.zset方法
zadd z1 6 v1 7 v2 8 v3 9 v4 按照权值给z1中添加元素
zrange z1 0 -1 返回所有有序元素
zrange z1 0 -1 withscores返回带有权值
zrangebyscore  z1 2 4 返回权值在2到4之间的元素
 zrangebyscore  z1 (2 4 返回权值在2到4之间的元素,不包含2
zrangebyscore  z1 2 (4 返回权值在2到4之间的元素,不包含4
zrangebyscore z1 2 (12 limit 5 3  返回z1中权限值在2到12不包括12的所有元素,并且限制从权限值为5开始的取3个元素
zrem z1 v5 删除v5元素
zcar z1 返回元素个数
zcount z1 60 80 返回权限是60到80的个数
zrank z1  v4 返回下标
zscore z1 v4 返回v4的权限制
zrevrank z1 v4 逆序获取下标
zrevrange z1 0 -1 逆序获取数据
zrevrangebyscore  z1 9 6 按照权值逆序获取值