Redis精简笔记总结

文章目录

  • Redis 应用场景
  • Redis 安装和使用
  • Redis数据结构:
  • 常用API
    • String
    • Hash
    • list
    • Set
    • SortedSet
    • keys 的通用操作
  • Redis特性
  • SpringDataRedis
  • 参考文档

Redis 应用场景

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

Redis 安装和使用

见:CentOS安装Redis

默认使用 6379 端口,Linux环境需要开启这个端口
启动
	前端模式启动
	后端启动(建议)
停止
	杀死redis进程
	或者
	结束redis cli 客户端
使用
	连接远程Redis的方式
	redis-cli -h IP地址 -p 端口号

Redis数据结构:

这五种数据结构可以参考Redis数据结构图
String 键值对
Hash value是一个Hash
List 有序不唯一 遍历效率高
Set 无序唯一,可以过滤重复数据,增删效率高
SortedSet 与Set相同,唯一区别,这个是有序的

常用API

keys * 查询所有

String

适用场景:

存
	set key value
取
	get key 
	getset key value
删
	del key
数值增减
	incr key
	decr key
	incrby key increment
		例:
		get num
			结果:5
		incrby num 2
			结果:7
	decrby key decrement
拼凑字符串
	注:append的作用是进行字符串的拼接,并且返回字符串的长度
	get str
		结果:he
	append str lele
		结果:6
	get str
		结果:helele

Hash

适用场景:

添加
	hset key field value
	hmset key field value field2 value2 ...
查询
	hget key field
	hmget key field field2 ...
	hkeys key
	hvals key
	hgetall key
删除
	hdel key field field2 ...
	del key
增加数字
	hincrby key field increment
	例如:
		hget myhash age
			结果:20
		hincrby myhash age 5
			结果:25
其它
	hexists key field
	hlen key	获取key所包含的field的数量

list

两端添加
	lpush key field [fieldN ...]
		这里的l代表left,数据的头
		lpush key a b c
	rpush key field [fieldN ...]
		这里的r代表right,数据的末尾
		rpush key 1 2 3
	扩展:
		lpushx key value 
			当指定的key存在时,向关联的list头部插入value。如果不存在,将不进行插入
		rpushx key value
查看列表
	lrange key start end
		注:
			从开头到末尾:第一条数据用0来表示
			从末尾到开头:第一条数据用-1来表示
			即:0表示第一条数据,-1表示最后一条数据
		例如:查询所有
			lrange mylist 0 -1
两端弹出	
	lpop key
		返回并弹出指定的key关联的链表中的第一个元素。如果key不存在,返回nil;
	rpop key
		从尾部弹出元素
获取列表中元素个数
	llen key
其它
		
	删除
		lrem key count value
			删除count个值为value的元素。
			如果count大于0,那么从头向尾遍历并删除count个值为value的元素;
			如果count小于0,那么从尾向头遍历并删除count个值为value的元素;
			如果count等于0,那么删除链表中所有等于value的元素。
	插入
		lset key index value
			在指定的索引下标处插入元素
		linsert key before|after pivot value
			在第一个pivot元素之前|之后插入value这个元素
	尾部元素弹出添加到头部
		rpoplpush resource destination
		例:
			lpush list1 1 2 3
				结果:3 2 1
			lpush list2 a b c
				结果:c b a
			rpoplpush list1 list1 
				结果:1
			lrange list1 0 -1
				结果:1 3 2
			rpoplpush list2 list1
				结果:a
			lrange list1 0 -1
				结果:a 1 3 2
	使用场景:
		rpoplpush的使用场景:
			Redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。
			可以参照文档 5.4.4

Set

Set 元素无序、不能重复

增
	sadd key value [valueN ...]
	向set中添加元素,如果该key的值已经存在,那么不会重复添加
查
	smembers key
	获取set中所有成员
删
	srem key member [memberN ...]
	删除set中指定的成员
判断数据在set中是否存在
	sismember key member 
	判断指定的成员在set中是否存在,1表示存在,0 表示不存在。
	(无论集合中有多少元素都可以极速的返回结果)

集合运算命令可以参考文档
	sdiff key [key...]
		差集
	sinter key [key...]
		交集
	sunion key [key...]
		并集

SortedSet

有顺序不能重复

增
	zadd key index value [index value ...]
	或者
	zadd key score member [score member ...]
	此方法存在替换分数、或者 修改分数
	
	例:
		zadd mysort 10 zhangsan 20 lisi 30 wangwu
			结果:3
		zrange mysort 0 -1
			结果:zhangsan lisi wangwu
		zadd mysort 40 zhangsan
			结果:0
		zrange mysort 0 -1
			结果:lisi wangwu zhangsan
	

查
	获得元素
		score key member 
			返回指定成员的分数
		zcard key
			获取集合中的成员数量
	范围查询
		zrange key start end [withscores]
			正序――查询[分数]成员
		zrevrange key start end [withscores]
			倒序――查询[分数]成员
			
删
	zrem key member [member ...]
		移除集合中指定的成员,可以指定多个成员
	zremrangebyrank key start stop
		按照排名范围删除元素
	zremrangebyscore key min max 
		按照分数范围删除元素
扩展命令见文档

keys 的通用操作

keys pattern
del key key2...
exists key 1存在,0不存在
rename key newkey
expire key second 设置过期时间,单位秒
ttl key 获取key所剩的超时时间,如果没有设置超时,返回-1;-2表示超时不存在。
Persist key 清除key的过期时间,key持久化
type key 获取key的类型,key不存在返回none

Redis特性

一个Redis实例最多可以提供16个数据库,下标从0-15,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库。
select 1

move newkey 1
	将当前库的key移植到1号库中
服务器命令
	ping 测试连接是否存活
	quit 退出连接
	dbsize 返回当前数据库中key的数目
	info 获取服务器的信息和统计
	flushdb 删除当前选择数据库中的所有key
	flushall 删除所有数据库中的所有key

SpringDataRedis

stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合

参考文档

更多命令可以参考Redis中文网 —— Redis命令API

你可能感兴趣的:(Redis)