redis

六、Redis常用数据结构
1.总体结构
在这里插入图片描述

Redis中的数据,总体上是键值对,不同数据类型指的是键值对中值的类型。
2.string类型
Redis中最基本的类型,它是key对应的一个单一值。二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis的string可以包含任何数据,比如jpg图片或者序列化的对象。Redis中一个字符串值的最大容量是512M。
3.list类型
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层是双向链表,所以它操作时头尾效率高,中间效率低(额外花费查找插入位置的时间)。
在Redis中list类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含
的最大元素数量是2^32-1个。
list是一个有序可以重复的数据类型。
在这里插入图片描述

4.set类型
Redis的set是string类型的无序集合。它是基于哈希表实现的。set类型插入数据时会自动去重。最大可以包含2^32-1个元素。
在这里插入图片描述

5.hash类型
本身就是一个键值对集合。可以当做Java中的Map<String,String>对待。每一个hash可以存储2^32-1个键值对。
在这里插入图片描述

6.zset类型
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
在这里插入图片描述

7.Geospatial
Redis 在 3.2 推出 Geo 类型,该功能可以推算出地理位置信息,两地之间的距离。
8.HyperLogLogs
用于大数据量去重,速度非常快,占用内存非常小。每个HyperLogLog键只需要花费12KB内存,就可以计算接近 2^64个不同元素的基数。比如计算网站UV(User view,用户访问数量,一个用户一天访问同一个URL地址多次合并为一次)。
9.bitmap
直接对string的二进制位进行操作的一组命令
10.常用数据类型应用场景
在这里插入图片描述
七、Redis命令行操作
1.Redis命令的小套路

NX:not exist
EX:expire
M:multi

2.基本操作
①切换数据库

Redis默认有16个数据库。 
115 # Set the number of databases. The default database is DB 0, you can select
116 # a different one on a per-connection basis using SELECT <dbid> where 
117 # dbid is a number between 0 and 'databases'-1 
118 databases 16 使用select进行切换,数据库索引从0开始 127.0.0.1:6379> select 2 OK127.0.0.1:6379[2]> select 0 OK127.0.0.1:6379>

②查看数据库长度
数据库长度就是这个数据库中存储了多少条数据
③清空全库
3.KEY操作
在实际操作中对于Key的定义大家注意下面几点:
Key不要太长,超过1024字节将消耗过多内存,降低查询效率。尽管Redis支持的Key最大长度为512MB。
Key仍然要做到见名知意。
在同一个项目中遵循同一个命名规范,习惯上多个单词用“:”分开。例如:“user:token:session:id”
Redis命令不区分大小写,Key区分大小写

KEYS PATTERN 
把匹配PATTERN的key返回。PATTERN中可以使用“*”匹配多个字符,使用“?”匹配单个字符 
●TYPE KEY 返回KEY对应的值的类型 
●MOVE KEY DB 把一组键值对数据移动到另一个数据库中 
●DEL KEY [KEY ...] 根据KEY进行删除,至少要指定一个KEYEXISTS KEY [KEY ...] 检查指定的KEY是否存在。指定一个KEY时,存在返回1,不存在返回0。可以指定多个,返回存在的KEY 的数量。 
●RENAME KEY NEWKEY 重命名一个KEYNEWKEY不管是否是已经存在的都会执行,如果NEWKEY已经存在则会被覆盖。 ●RENAMENX KEY NEWKEY 只有在NEWKEY不存在时能够执行成功,否则失败 
●TTL KEY 以秒为单位查看KEY还能存在多长时间 正数:剩余的存活时间(单位:秒)
-1:永不过期 -2:不存在的Key 
●EXPIRE KEY SECONDS 给一个KEY设置在SECONDS秒后过期,过期会被Redis移除。 
●PERSIST KEY 移除过期时间,变成永久key

4.string操作

SET KEY VALUE [EX SECONDS] [PX MILLISECONDS] [NX|XX]KEY设置一个string类型的值。 EX参数用于设置存活的秒数。 PX参数用于设置存活的毫秒数。 NX参数表示当前命令中指定的KEY不存在才行。 XX参数表示当前命令中指定的KEY存在才行。 
●GET KEY 根据key得到值,只能用于string类型。 
●APPEND KEY VALUE 把指定的value追加到KEY对应的原来的值后面,返回值是追加后字符串长度 
●STRLEN KEY 直接返回字符串长度 
●INCR KEY 自增1(要求:参与运算的数据必须是整数且不能超过整数Integer范围) 
●DECR KEY 自减1(要求:参与运算的数据必须是整数且不能超过整数Integer范围) 
●INCRBY KEY INCREMENT 原值+INCREMENT(要求:参与运算的数据必须是整数且不能超过整数Integer范围) 
●DECRBY KEY DECREMENT 原值-DECREMENT(要求:参与运算的数据必须是整数且不能超过整数Integer范围) 
●GETRANGE KEY START END 从字符串中取指定的一段,索引从0开始 START是开始取值的索引 END是结束取值的索引 
●SETRANGE KEY OFFSET VALUE 从offset(从0开始的索引)开始使用VALUE进行替换 包含offset位置 
●SETEX KEY SECONDS VALUE 设置KEY,VALUE时指定存在秒数 
●SETNX KEY VALUE 新建字符串类型的键值对 
●MSET KEY VALUE [KEY VALUE ...] 一次性设置一组多个键值对 
●MGET KEY [KEY ...] 一次性指定多个KEY,返回它们对应的值,没有值的KEY返回值是(nil)MSETNX KEY VALUE [KEY VALUE ...] 一次性新建多个值 
●GETSET KEY VALUE 设置新值,同时能够将旧值返回

5.list操作

LPUSH key value [value ...] 针对key指定的list,从左边放入元素 ●RPUSH key value [value ...]
针对key指定的list,从右边放入元素 
●LRANGE key start stop 根据list集合的索引打印元素数据 正着数:0,1,2,3,... 倒着数:-1,-2,-3,...LLEN key 返回list集合的长度 
●LPOP key 从左边弹出一个元素。 弹出=返回+删除。 
●RPOP key 从右边弹出一个元素。 
●RPOPLPUSH source destination 从source中RPOP一个元素,LPUSH到destination中 
●LINDEX key index 根据索引从集合中取值 
●LINSERT key BEFORE|AFTER pivot value 在pivot指定的值前面或后面插入value 如果pivot值有重复的,那么就从左往右数,以第一个遇到的pivot为基准 BEFORE表示放在pivot前面 AFTER表示放在pivot后面 
●LPUSHX key value 只能针对存在的list执行LPUSHLREM key count value 根据count指定的数量从key对应的list中删除value 具体执行时从左往右删除,遇到一个删一个,删完为止 
●LSET key index value 把指定索引位置的元素替换为另一个值 
●LTRIM key start stop 仅保留指定区间的数据,两边的数据被删除

6.set操作

SADD key member [member ...] 给key指定的set集合中存入数据,set会自动去重 
●SMEMBERS key 返回可以指定的set集合中所有的元素
●SCARD key 返回集合中元素的数量 
●SISMEMBER key member 检查当前指定member是否是集合中的元素 返回1:表示是集合中的元素 返回2:表示不是集合中的元素 
●SREM key member [member ...] 从集合中删除元素 
●SINTER key [key ...] 将指定的集合进行“交集”操作 集合A:a,b,c 集合B:b,c,d 交集:b,c
●SINTERSTORE destination key [key ...] 取交集后存入destination ●SDIFF key [key ...] 将指定的集合执行“差集”操作 
集合A:a,b,c
集合B:b,c,d AB执行diff:a 相当于:A-交集部分 
●SDIFFSTORE destination key [key ...]SUNION key [key ...] 将指定的集合执行“并集”操作 
集合A:a,b,c 
集合B:b,c,d 
并集:a,b,c,d 
●SUNIONSTORE destination key [key ...]SMOVE source destination member 把member从source移动到destination 【测试数据 SADD testset a b c d e f g h i j k l m n o p q r s t u v w x y z aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv ww xx yy zz 】
●SSCAN key cursor [MATCH pattern] [COUNT count] 基于游标的遍历。cursor是游标值,第一次显示第一块内容时,游标取值为0;根据后续返回的新的游 标值获取下一块数据。直到游标值变成0,说明数据遍历完成。
●SRANDMEMBER key [count] 从集合中随机返回count个数量的元素,count不指定就返回1个(数据有可能重复出现) 
●SPOP key [count] 从集合中随机弹出count个数量的元素,count不指定就弹出1个(保证不会有重复数据出现)

7.hash操作

HSET key field value 插入新数据返回1 修改旧数据返回0HGETALL key 
●HGET key field 
●HLEN key 
●HKEYS key 
●HVALS key 
●HEXISTS key field 
●HDEL key field [field ...]HINCRBY key field increment 
●HMGET key field [field ...]HMSET key field value [field value ...]HSETNX key field value 要求field是新建的

8.zset操作

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]ZRANGE key start stop [WITHSCORES]ZCARD key 
●ZSCORE key member 
●ZINCRBY key increment member 
●ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 在分数的指定区间内返回数据 
●ZRANK key member 先对分数进行升序排序,返回member的排名。排名从0开始 ●ZREM key member [member ...]

启动Redis主从复制集群

/usr/local/redis/bin/redis-server /usr/local/cluster-redis/redis6000.conf 
/usr/local/redis/bin/redis-server /usr/local/cluster-redis/redis7000.conf 
/usr/local/redis/bin/redis-server /usr/local/cluster-redis/redis8000.conf

使用redis-cli停止指定服务器的命令格式如下:

/usr/local/bin/redis-cli -h IP地址 -p 端口号 shutdown
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值