Redis基本操作
常用网站
数据库排名网站:https://db-engines.com/en/ranking
Redis 相关参考网址如下所示:
Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html
Redis 官网:https://redis.io/
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io/
Redis 命令参考:http://doc.redisfans.com/
基本操作
操作 | 代码语法 |
---|---|
数据持久化,在关闭数据库,自带保护机制 | shutdown |
ps -ef查看所有进程 | ps -ef |
查看类型 | help type(? type) |
查看多有key | keys * |
查看还有几秒 | ttl id |
设置存活秒数 | expire id 6 |
清空当前数据库 | flushdb |
String类型操作实践
操作 | 代码语法 |
---|---|
1、让当前键值递增,每次+1。 | incr key |
2、键值递增,每次+increment次 | incrby key increment |
3、按照默认步长(默认为1)进行递减 | decr key |
4、按照指定步长进行递减 | decrby key decrement |
5、向尾部追加值。如果键不存在则创建该键 | append key value |
6、字符串长度 | strlen key |
7、同时设置/获取多个键值 | mset key value [key value …] |
Hash类型应用实践
大value里面是小key(field)小value
操作 | 代码语法 |
---|---|
1、添加hash值 | hset key field value |
2、获取hash值 | hget key field |
3、设置多个hash值 | hmset key field value [field value…] |
4、获取多个hash值 | hmget key field [field] |
5、获取全部hash值 | hgetall key |
6、小键值新增 | hincrby key field increment |
7、判断是否存在 | hexists key field |
8、删除属性(小key) | hdel key field [field …] |
9、只获取字段名 | hkeys |
10、只获取字段值 | hvals |
11、获取长度 | hlen key |
List类型应用实践
Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。
操作 | 代码语法 |
---|---|
1、从左(右)插入数据 | lpush(rpush) key element [element …] |
2、从左(右)移除数据 | lpop(rpop)key [count] |
3、取数据(含头含尾) | lrange key start stop(0 ~ -1取全部) |
4、删全部数据 | del list |
5、插数据 | linsert key before(after)pivot element |
6、修改数据 | lset key index element |
7、只保留该范围数据 | ltrim key start stop |
8、取右边第一个元素从左边插入 | rpoplpush source destination |
Set类型应用实践
Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
操作 | 代码语法 |
---|---|
1、添加元素,重复元素添加失败,返回0 | sadd key member [member …] |
2、删除指定元素数据 | srem key member [member …] |
2、查看所有数据 | smembers key |
3、删除随机数据 | spop key [count] |
4、查看数据个数 | scard key |
5、移动数据从一个集合到另外一个集合 | smove source destination member |
6、查看指定集合里面的数据 | sunion key [key …] |
7、判断是否存在指定元素member | sismember key member |
之所以从缓存中拿数据会快,是因为缓存的数据存在于内存中,不像mysql的数据是存在磁盘上的,即不用经过从磁盘加载到内存这个过程(这个过程是非常耗时和低效的),直接从内存获取数据。
基于aop方式进行缓存机制
注解:
1.加载业务方法上:
@Cacheable(value = “menuCache”,key="#id")
@CachePut(value = “menuCache”,key="#menu.id")
2.加在主启动类上:
@EnableCaching //开启缓存