本文只是对Redis进行初步的介绍,基于Windows系统,是比较简单的。
Redis(Remote Dictionary Server )是一个高性能的、NoSQL(Not Only SQL)数据库。 关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据。
Redis的应用场景主要有缓存(数据查询、短连接、新闻内容、商品内容等等)、聊天室的在线好友列表任务队列、(秒杀、抢购、12306等等)、应用排行榜、网站访问统计、数据过期处理(可以精确到毫秒)、分布式集群架构中的session分离等。
Redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构。value的数据结构:
set name zhulin
get name"zhulin"
del name
hset myhash name lisihset myhash id 123
hget myhash username"lisi"
hgetall myhash1) "username"2) "lisi"3) "password"4) "123"
hdel myhash username
可以添加一个元素到列表的头部(左边)或者尾部(右边)。
lpush key value: 将元素加入列表左表
rpush key value:将元素加入列表右边
lpush myList alpush myList brpush myList c
lrange myList 0 -11) "b"2) "a"3) "c"
sadd myset asadd myset a
smembers myset1) "a"
srem myset a
不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zadd mysort 60 zhangsanzadd mysort 50 lisizadd mysort 80 wangwu
zrange mysort 0 -11) "lisi"2) "zhangsan"3) "wangwu"zrange mysort 0 -1 withscores1) "zhangsan"2) "60"3) "wangwu"4) "80"5) "lisi"6) "500"
zrem mysort lisi
1. keys * : 查询所有的键2. type key :获取键对应的value的类型3. del key:删除指定的key value

# after 900 sec (15 min) if at least 1 key changedsave 900 1# after 300 sec (5 min) if at least 10 keys changedsave 300 10# after 60 sec if at least 10000 keys changedsave 60 10000
Redis全路径>redis-server.exe redis.windows.conf
日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据。
appendonly no(关闭aof) --> appendonly yes (开启aof)

# appendfsync always :每一次操作都进行持久化appendfsync everysec :每隔一秒进行一次持久化# appendfsync no :不进行持久化
使用步骤
//1. 获取连接Jedis jedis = new Jedis("localhost",6379);//2. 操作jedis.set("username","zhangsan");//3. 关闭连接jedis.close();
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作//存储jedis.set("username","zhangsan");//获取String username = jedis.get("username");System.out.println(username);//可以使用setex()方法存储可以指定过期时间的 key valuejedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对//3. 关闭连接jedis.close();
map格式
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// 存储hashjedis.hset("user","name","lisi");jedis.hset("user","age","23");jedis.hset("user","gender","female");// 获取hashString name = jedis.hget("user", "name");System.out.println(name);// 获取hash的所有map中的数据Map<String, String> user = jedis.hgetAll("user");// keysetSet<String> keySet = user.keySet();for (String key : keySet) {//获取valueString value = user.get(key);System.out.println(key + ":" + value);}//3. 关闭连接jedis.close();
linkedlist格式。支持重复元素
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// list 存储jedis.lpush("mylist","a","b","c");//从左边存jedis.rpush("mylist","a","b","c");//从右边存// list 范围获取List<String> mylist = jedis.lrange("mylist", 0, -1);System.out.println(mylist);// list 弹出String element1 = jedis.lpop("mylist");//cSystem.out.println(element1);String element2 = jedis.rpop("mylist");//cSystem.out.println(element2);// list 范围获取List<String> mylist2 = jedis.lrange("mylist", 0, -1);System.out.println(mylist2);//3. 关闭连接jedis.close();
不允许重复元素
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// set 存储jedis.sadd("myset","java","php","c++");// set 获取Set<String> myset = jedis.smembers("myset");System.out.println(myset);//3. 关闭连接jedis.close();
不允许重复元素,且元素有顺序。
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// sortedset 存储jedis.zadd("mysortedset",3,"亚瑟");jedis.zadd("mysortedset",30,"后裔");jedis.zadd("mysortedset",55,"孙悟空");// sortedset 获取Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);System.out.println(mysortedset);//3. 关闭连接jedis.close();
//0.创建一个配置对象JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(50);config.setMaxIdle(10);//1.创建Jedis连接池对象JedisPool jedisPool = new JedisPool(config,"localhost",6379);//2.获取连接Jedis jedis = jedisPool.getResource();//3. 使用jedis.set("hehe","heihei");//4. 关闭 归还到连接池中jedis.close();
关于Redis最基本的知识就介绍这点。其实,真正学习Redis还是要在Linux上,毕竟实际开发都是用Linux。
文章转载自虹猫tomcat,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




