李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
其它
正文
Redis简单命令
Leefs
2020-04-15 AM
3980℃
2条
# Redis简单命令 ### 一、Redis 简介 + 1、Redis 是一个 Key-Value 类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期 通过异步操作把数据库数据flush到硬盘上进行保存。 + 2、因为是纯内存操作, Redis 的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能 快的Key-Value DB。 + 3、Redis 大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,因此 Redis 可 以用来实现很多有用的功能。 + 4、Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 ### 二、Redis应用场景 ##### 1、缓存 缓存数据,缓存会话信息等... ##### 2、消息队列 Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息 队列平台来使用。 ##### 3、排行榜/计数器 Redis在内存中对数字进行递增或递减的操作实现的非常好。集合( Set )和有序集合( Sorted Set )也使得我们在执行这些操作的时候变的非常简单。 ##### 4、发布/订阅 Redis 的发布/订阅功能。发布/订阅的使用场景确实非常多。我已 看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能 来建立聊天系统! ### 三、Redis数据类型 + String 字符串 + Hash 类型 + List 列表 + Set 集合 + ZSet 有序集合 *注意:在Redis 中的命令语句中,命令是忽略大小写的,而key是不忽略大小写的。* ##### 1、String ```sql (1)键和值都是字符串 (2)set key value 设置值 (3)get key 获取值 (4)多次设置相同 key 的 value 会覆盖 (5)setnx key value 不存在则设置值 (6)del key 删除键值 (7)setex key 有效期时间(单位:秒) value,键值有效期之后自动失效 (8)mset key1 value1 key2 value2 keyn valuen 一次设置多个值 (9)mget key1 key2 keyn 一次获取多个值 (10)getset key value 返回key的旧值并将该key设置为新值 (11)incr | decr key 对一个值进行自增和递减 (12)incrby|decrby key 步长 对一个值进行步长自增和递减 (13)append key val 给key的value追加val的字符串 (14)strlen key 返回key对于的字符串长度 ``` ##### 2、Hash **适合存储对象,将一个对象类型存储在hash要比存储在string类型里占用更小的内存空间** ```redis (1)hset hash_name key value 存一个键值对到名为hash_name的Hash里 (2)hget hash_name key 从hash_name的hash里取key的value (3)hmset hash_name key1 value1 key2 value2 keyn valuen 一次设置多个值 (4)hmget hash_name key1 key2 keyn 一次获取多个值 (5)hsetnx hash_name key val 不存在则设置为val值 (6)hincrby | hdecrby hash_name key 步长 集合的步长递增和递减 (7)hexists hash_name key 集合里是否存在key,不存在返回0 (8)hlen hash_name 集合里的所有键的数量 (9)hdel hash_name key 删除名称为hash_name 的hash里key对应的键值 (10)hkeys hash_name 获取hash里的所有key (11)hvals hash_name 获取hash里的所有value (12)hgetall hash_name 获取hash里的所有key,value ``` ##### 3、List **List 内部是使用双向链表实现,所以获取越接近两端的元素速度就越快。这意味着即使是一个有几千万 个元素的列表,获取头部或尾部的10条记录也是极快的。** 链表结构,双向链表,既可以成为栈,也可以成为队列,元素可以重复 ```redis (1)lpush 从头部加入元素,先进后出, lpush list_name value (2)rpush 从尾部加入元素,先进先出, rpush list_name value (3)lrange list_name 0 -1 到名为list_name的list里从0开始,取出所有元素,-1为取出所有,即到直到没有元素位置 (4)linsert list_name before “value” “insert_value” 在 value 值之前插入 insert_value (5)lset list_name 下标 "value" 将指定 下标 的值替换为 value (6)lrem list_name 删除个数 "value" 从指定下标开始,删除n个值为 value 的元素 (7)ltrim list_name 下标 上标 保留从下标到上标的元素 (8)lpop list_name 从 list 的头部删除元素,并返回删除元素 (9)rpop list_name 从 list 的尾部删除元素,并返回删除元素 (10)rpoplpush list_name_1 list_name_2 value 先从list_name_1中移除元素,再往 list_name_2中的头部添加元素 (11)lindex list_name index 返回 index 处的元素 (12)llen list_name 返回元素的个数 ``` ##### 4、Set + Set 中的数据是不重复且没有顺序。 通过 Hashtable 实现 。 + Set 集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等。 + Set 还提供了多个集合之间的交集、并集、差集的运算。 ``` redis (1)sadd set_name value 向set_name的set中添加value元素 (2)srem set_name value 移除set_name中的value元素 (3)spop set_name 移除并返回集合中的一个随机元素 (4)smembers set_name 查看set里的所有元素 (5)sdiff set_name1 set_name2 取俩个集合的差集,那个集合在前面就以那个为标准 (6)sdiffstore set_name3 set_name1 set_name2 取 set1 和 set2 的差集并存储到 set3 ``` ![Redis简单命令01.png][1] ```redis (1)sinter key1 [key2] 返回给定所有集合的交集 (2)sinterstore set_name3 set_name1 set_name2 取 set1 和 set2 的交集并存储到 set3 ``` ![Redis简单命令02.png][2] ``` (1)sunion key1 [key2] 返回给定所有集合的并集 (2)sunionstore set_name3 set_name1 set_name2 取 set1 和 set2 的并集并存储到 set3 ``` ![Redis简单命令03.png][3] ```java (1)smove set_name1 set_name2 value 将set_name1中的元素value移动到set_name2中 (2)scard set_name 查看集合的元素个数 (3)sismember set_name value 查看value 是否在set中 (4)srandmember set_name 随机返回一个set中的元素 ``` ##### 5、 ZSet **介绍** + 有序不重复的集合。 + 在 Set 类型的基础上, Zset 集合中的每个元素都关联一个分数,这使得我们不仅可以完成插 入、删除和判断元素是否存在在集合中。 + 还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。 + 分数类比List集合的索引 **Zset 集合和 List 集合比较** 1、二者都是有序的。 2、二者都可以获得某一范围的元素。 **区别:** (1)List 集合 类型是通过双向链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问 中间数据的速度会变慢。 (2)Zset 集合 使用散列表( Hashtable )实现,所以即使读取位于中间部分的数据也很快。 (3)List 集合 中不能简单的调整某个元素的位置,但是 Zset 集合 可以(通过更改分数实现) (4)Zset 集合 要比 List 集合 更耗内存。 **命令** ```java (1)zadd key score value 向 Zset 中的索引n中添加元素(value) (2)zrange key 0 -1 [withscores] 列出所有元素,索引从0开始到-1(所有),并显示分数 (3)zrem key value 删除zset中的元素value (4)zincrby key increment member 步长,以指定步长去自动递增或递减对应元素的分数 (5)zrangebyscore key min max [WITHSCORES] [LIMIT offset count] 返回所有符合条件 的成员 (6)zrank set_name value 如果成员在有序集合存在,返回整数:成员的权重。如果成员在有序 集合不存在或键不存在,字符串返回nil。 (7)zrevrank set_name value 返回有序集key中成员member的排名,其中有序集成员按score值从大到小排列。排名以0为底,也 就是说,score值最大的成员排名为0。 使用zrank命令可以获得成员按score值递增(从小到大)排列 的排名(顺序)。 (8)zremrangebyrank key start stop 删除有序集key中,指定排名(rank)区间内的所有成员。下标参数start和stop都以0为底,0处是分数 小的那个元素。这些索引也可是负数,表示位移从高分处开始数。例如,-1是分数高的元 素,-2是分数第二高的,依次类推。 (9)zremrangebyscore key min max 删除所有符合条件 min< =score <= max 的成员 (10)zcard set_name 返回集合里所有元素的个数 (11)zcount key min max 返回所有符合条件 min < = score <= max 的成员个数 ``` ### 四、Redis 常用命令 ```java (1)keys * 所有的键,支持模糊查询 (2)exists key 是否存在指定键 (3)expire key time_out 设置某个key的过期时间,单位为秒,使用 ttl key 查看剩余时间,-1代表永不过期 ,-2代表过期 (4)persist key 取消过期时间,执行之后再执行 ttl key 返回 -1 (5)select 选择数据库,数据库为0-15(默认共16个库),默认进入0库,早期16个库是为了安全, 可以使用8个库用作备份,看你怎么拆分,或者不同的数据类型放到不同的数据库,现在已经不考 虑,redis已经有集群实现。 (6)move [key] [数据库下标] 移动数据到其他库 (7)rename key newkey 重命名 key (8)dbsize 查看数据库的key数量 (9)info 获取数据库信息 (10)flushdb 清空当前数据库 (11)flushall 清空所有数据库 ``` [1]: https://lilinchao.com/usr/uploads/2020/04/3781987142.png [2]: https://lilinchao.com/usr/uploads/2020/04/2496264657.png [3]: https://lilinchao.com/usr/uploads/2020/04/3102003880.png
标签:
Redis
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/858.html
上一篇
MySQL按条件统计数量
下一篇
Redis配置文件redis.conf介绍
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
pytorch
Linux
排序
Netty
散列
正则表达式
高并发
Spring
Golang基础
Jquery
MyBatis-Plus
NIO
DataX
Spark Core
Filter
国产数据库改造
Flink
数据结构和算法
nginx
SQL练习题
Java阻塞队列
Azkaban
Elasticsearch
BurpSuite
Stream流
SpringBoot
字符串
JavaWEB项目搭建
Http
Typora
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭