redis数据类型:
1、String类型:
1)设置键值对:set key value (=>是返回的内容)
示例:set name liu =>ok
2)通过键获取值:get key
示例:get name =>liu
3)判断键是否存在:exists key
示例:exists name => <integer>1
4)删除键值对:del key
示例:del name => <integer>1
5)设置键值对的生命周期:expire key seconds
示例:expire name 5 => <integer>1 //5秒后name消失
6)模糊查询:keys patern(*统配N个字符,?统配1个字符,意思就是*代表N个字符,?代表1个字符,类似mysql数据库模糊查询)查出来的是键
示例:keys *a* =>name
keys ?ame =>name
7)序列化对象:dump key
示例:dump name
8)截取字符串:getrange key start end 类似java 截取字符串,从start 索引开始,截取到end索引。
示例: getrange name 1 2 =>iu
2、哈希Hash类型
1)设置:hmset key field value [field value]相当于设置java的类的实例化对象 ,key:对象名字,field :字段,value:字段的值,如果key已经存在,就是追加字段。
示例:hmset user name liu age 18 =>ok
2)获取一个字段的值: hget key field
示例:hget user name =>"liu"
3)获取多个字段的值:hmget key field [field]
示例:hmget user name age =>"liu" "18"
4)获取所有字段,包括键和值 hgetall key
示例:hgetall user =>"name" "liu" "age" "18"
5)删除某些字段:hdel key field[field]
示例:hdel user age => <integer>1
6)是否存在字段:hexists key field
示例:hexists user age => <integer>0
7)获取所有字段的名字,不包括值:hkeys key
示例:hkeys user =>"name"
8)获取所有字段的值,不包括字段的名字:hvals key
示例:hvals user => "liu"
3、列表List类型
1)前追加:lpush key value [value] //在key 列表最前面添加一个value
示例:lpush lessons css => <integer>1 //在lessons最前面添加css
2)后追加:rpush key value [value] //在列表后添加value
示例:lpush lessons java => <integer>2
3)范围获取:lrange key start stop //从start索引到stop索引结束获得列表
示例:lrange lessons 0 100 =>"css" "java"
4)指定索引获取:lindex key index
示例:lindex lessons 0 => "css"
5)插入元素:linsert key before|after pivot value
示例:linsert lessons before java html => <integer>3
linsert lessons after css sql =><integer>4
6)前移除:lpop key
示例:lpop lessons =>css //把lessons的第一个元素移除
7)后移除:rpop key
示例:rpop lessons =>java //把lessons的最后一个元素移除
8)范围移除:ltrim key start stop
示例:ltrim lessons 2 3 =>ok //只保留start索引到stop索引范围的元素把其他的删掉
9)移除元素:lrem key count value
示例:lrem lessons 1 java =>html //移除索引1的java,需要指定索引和值
10)修改某个索引的值:lset key index value
示例:lset lessons 0 mysql =>ok //把0索引原来的值sql改为mysql
4、集合Set,和List区别是一个没有索引,一个有索引
1)添加元素:sadd key member[member] //设置一个set的集合,里面的元素为member
示例:sadd java javase html css js sql javaee => <integer>6
sadd web html css js jQuery easyui angularjs => <integer>6
2)获取元素:smembers key
示例:smembers java => html css js sql javaee javase //返回的元素无序。
3)获取长度:scard key
示例:scard java => <integer>6
4)获取集合交集:sinter key [key]
示例:sinter java web =>js css html
5)获取交集保存:sinterstore storekey key [key]
示例:sinterstore jiaoji java web => <integer>3 //将java和web相同的部分保存在一个set中。
6)获取集合差值:sdiff key [key] //注意,两个key的前后顺序不同,返回的结果不同,返回的是第一个集合中有但第二个集合中没有的元素
示例:sdiff java web =>sql javaee javase
sdiff web java =>angularjs jQuery easyui
7)获取差值保存:sdiffstore storekey key [key] //将获取的差值保存在一个集合中。
示例:sdiffstore javadiff java web => <integer>3
8)获取集合并集:sunion key [key]
示例:sunion java web => javase html css js sql javaee angularjs jQuery easyui //获取java和web的并集
9)获取并集保存:sunionstore storekey key [key]
示例:sunionstore javaweb java web => <integer>9 //将并集保存在javaweb集合中。
10)获取随机元素:srandmember key [count]
示例:srandmember java =>sql //随机取一个元素
srandmember java 2 =>sql js //写count为随机取几个元素。
11)移动元素:smove source destination member
示例:smove web java easyui => <integer>1 //把web集合中的easyui元素移动到java中
12)移除随机元素:spop key [count]
示例:spop java =>javase //随机删除一个元素
spop java 2 //随机移除几个元素
13)移除指定元素:srem key member [member]
示例:srem java js css => easyui javaee sql html javase
5、有序集合:Sorted Set 其实就是{(91,javase),(92,javaee),(93,css),(94,js)}这样的键值对集合。
1)ZADD key score1 member1 [score2 member2] //向有序集合添加一个或多个成员,或者更新已存在成员的分数。
示例: zadd lessons 91 javase 92 html 93 css 94 js 95 sql 96 javaee => <integer>6
2)ZINCRBY key increment member //有序集合中对指定成员的分数加上增量increment
示例:zincrby lessons 100 javaee => 196
3)ZRANGE key start stop [WITHSCORES] //通过索引区间返回有序集合成指定区间内的成员
示例:zrange lessons 0 1 => javase html
4)ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] //通过分数返回有序集合指定区间内的成员
示例:zrangebyscore bwf 101 196 =>javaee //因为刚才把javaee的分数改为了196
5)ZCARD key //获取有序集合的成员个数。
示例:zcard lessons => <integer>6
6)ZCOUNT key min max //计算在有序集合指定区间分数的成员数。
示例:zcount lessons 0 200 => <integer>6
7)ZRANGE key start stop //获取有序集合中的所有元素
示例:zrange lessons 0 5 => 1)javase 2)html 3)css 4)js 5)sql 6)javase
java连接redis
1)maven项目中,添加redis依赖:
<dependency>
<groudId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2)实例化Jedis对象,在主方法中:
Jedis jedis= new Jedis("192.168.1.101",6379); //IP地址瞎写的,本机地址。
3)测试连接
//验证密码,abc123是密码,瞎写的:
jedis.auth("abc123")
System.out.println(jedis.ping());
控制台输出PONG,表示连接成功。如果不成功,按以下操作:
a)关闭防火墙
service iptables stop
chkconfig iptables off
b)关闭进程守护模式 redis.conf配置文件中protected-mode no
c)设置任何ip均可访问redis.conf配置文件中 bind 0.0.0.0
d)设置redis密码 config set requirepass xxx
e)重启redis服务
./redis-cli shutdown //前面有个点
./src/redis-server ./redis.conf //有3个点
代码:
import java.util.HashMap;
import java.util.Map;
import redis.clients.jedis.Jedis;
public class redis {
public static void main(String[] args) {
// TODO Auto-generated method stub
Jedis jedis=new Jedis("192.168.2.104",6379);
System.out.println(jedis.ping());
//设置字符串数据
jedis.set("name","liu");
//设置hashmap数据
Map<String,String>map=new HashMap<String,String>();
map.put("name", "刘一");
map.put("age", "20");
jedis.hmset("user1", map);
//设置列表List
jedis.lpush("lessonsss","javase","html","css","js","javaee");
//设置set
jedis.sadd("SSH", "Strus","Spring","Hibernate");
//设置Sorted Set
Map<String,Double>map1=new HashMap<String, Double>();
map1.put("SpringMVC", 90d);
map1.put("Spring", 91d);
map1.put("MyBatis", 92d);
jedis.zadd("SSM", map1);
//获取字符串的数据
System.out.println(jedis.get("name"));
//获取map的数据
jedis.hgetAll("user1");
for(Map.Entry<String, String> member:jedis.hgetAll("user1").entrySet()){
System.out.println(member.getKey()+member.getValue());
}
//获取列表List的数据
for(String number:jedis.lrange("lessonsss", 0, 100)){
System.out.println(number);
}
//获取set数据
for(String member:jedis.smembers("SSH")){
System.out.println(member);
}
//获取Sorted Set数据
for(String member:jedis.zrange("SSM",0,100)){
System.out.println(member);
}
}
}