1.什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,
官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,
且Redis通过提供多种键值数据类型来适应不同场景下的存储需求。

2.redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)
聊天室的在线好友列表
任务队列。(秒杀、抢购、12306等等)
应用排行榜
网站访问统计
数据过期处理(可以精确到毫秒
分布式集群架构中的session分离

3.redis的数据结构:

存储

set username zhangsan    
hset myhash username lisi
lpush myList a;rpush myList c
sadd myset a
zadd mysort 60 zhangsan

获取

get username
hget myhash username;hgetall myhash
lrange myList 0 -1
smembers myset
zrange mysort 0 -1;zrange mysort 0 -1 withscores

删除

del username
hdel myhash username
lpop key;rpop key
srem myset a
zrem mysort lisi

redis存储的是:key,value格式的数据,其中key都是字符串value有5种不同的数据结构:
value的数据结构:
1) 字符串类型 string

		存储: set key value
			set username zhangsan
		获取: get key
			get username
		删除: del key
			del username

2) 哈希类型 hash : map格式

		存储: hset key field value
			hset myhash username lisi
			hset myhash password 123
		获取: 
			获取指定的field对应的值:hget key field
			hget myhash username
			获取所有的field和value:hgetall key
			hgetall myhash
		删除: hdel key field
			hdel myhash username

3) 列表类型 list : linkedlist格式。支持重复元素
可以添加一个元素到列表的头部(左边)或者尾部(右边)

		添加:
			将元素加入列表左表:lpush key value
				lpush myList a
			将元素加入列表右边:rpush key value
				rpush myList c
		获取:
			范围获取:lrange key start end
				lrange myList 0 -1
		删除:
			lpop key: 删除列表最左边的元素,并将元素返回
			rpop key: 删除列表最右边的元素,并将元素返回

4) 集合类型 set : 不允许重复元素

		存储:sadd key value
			sadd myset a
		获取:smembers key:获取set集合中所有元素
			smembers myset
		删除:srem key value:删除set集合中的某个元素
			srem myset a

5) 有序集合类型 sortedset:
不允许重复元素,且元素有顺序
每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。

		存储:zadd key score value
			zadd mysort 60 zhangsan
		获取:zrange key start end [withscores]
			zrange mysort 0 -1
			zrange mysort 0 -1 withscores
		删除:zrem key value
			zrem mysort lisi

4. 通用命令

	1. keys * : 查询所有的键
	2. type key : 获取键对应的value的类型
	3. del key:删除指定的key value

5.Jedis

字符串类型 string

		//存储
       	jedis.set("username","zhangsan");
        //获取
        String username = jedis.get("username");
		//可以使用setex()方法存储可以指定过期时间的 key value
		//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
        jedis.setex("activecode",20,"hehe");

哈希类型 hash : map格式

	 // 存储hash
     jedis.hset("user","name","lisi");
     jedis.hset("user","age","23");
	 // 获取hash
     String name = jedis.hget("user", "name");
	 // 获取hash的所有map中的数据
     Map<String, String> user = jedis.hgetAll("user");

列表类型 list : linkedlist格式。支持重复元素

	// list 存储
    jedis.lpush("mylist","a","b","c");//从左边存
    jedis.rpush("mylist","a","b","c");//从右边存
	// list 范围获取
    List<String> mylist = jedis.lrange("mylist", 0, -1);//是ArrayList
	// list 弹出
	String element1 = jedis.lpop("mylist");
	String element2 = jedis.rpop("mylist");

集合类型 set : 不允许重复元素

	 // set 存储
     jedis.sadd("myset","java","php","c++");
	 Set<String> myset = jedis.smembers("myset");

有序集合类型 sortedset:不允许重复元素,且元素有顺序

	 // sortedset 存储
     jedis.zadd("mysortedset",3,"亚瑟");
     jedis.zadd("mysortedset",30,"后裔");
     jedis.zadd("mysortedset",55,"孙悟空");
	 // sortedset 获取
     Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);

6.redis高级:

看大佬的

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐