Redis入门(二)

3.7 Redis 默认16个库

1)Redis默认创建16个库,每个库对应一个下标,从0开始.
通过客户端连接后默认进入到0 号库,推荐只使用0号库.

127.0.0.1:6379> 

16个是因为配置文件中是这样的 [aa@hadoop102 redis]$ vim redis.conf
在这里插入图片描述
2)使用命令 select 库的下标来切换数据库

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]>

第4章 Redis的五大数据类型

4.1 帮助手册

http://redisdoc.com/

4.2 redis键(key)

1)查看当前库的所有键

127.0.0.1:6379> keys *

2)判断某个键是否存在

127.0.0.1:6379> exists <key>

3)查看键对应的value的类型

127.0.0.1:6379> type <key>

4)删除某个键

127.0.0.1:6379> del <key>

5)设置过期时间

127.0.0.1:6379> expire <key> <second>

6)查看过期时间,-1表示永不过期,-2表示已过期

127.0.0.1:6379> ttl <key>

7)查看当前库中key的数量

127.0.0.1:6379> dbsize

8)清空当前库

127.0.0.1:6379> flushdb

9)清空所有库

127.0.0.1:6379> flushall

在这里插入图片描述

4.3 String

4.3.1 特点

(1)String是Redis最基本的类型,适合保存单值类型,即一个key对应一个value(2)String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
(3)一个Redis中字符串value最多可以是512M
在这里插入图片描述

4.3.2 常用操作

1)添加键值对

127.0.0.1:6379> set <key> <value>

2)获取键的值

127.0.0.1:6379> get <key>

3)将给定的追加到原值的末尾

127.0.0.1:6379> append <key> <value>

4)获取值的长度

127.0.0.1:6379> strlen <key>

5)当key不存在时设置key的值

127.0.0.1:6379> setnx <key> <value>

6)将key中存储的数字值增1 必须是数字才可以(点赞功能!就是这个!)

127.0.0.1:6379> incr <key>

7)将key中存储的数字值减1

127.0.0.1:6379> decr <key>

8)将key中存储的数字值按照指定步长增 (会员点击加10分….)

127.0.0.1:6379> incrby <key> <步长>

9)将key中存储的数字值按照指定步长减

127.0.0.1:6379> decrby <key> <步长>

10)同时添加一个或者多个key

127.0.0.1:6379> mset <k1> <v1> <k2> <v2>

11)同时获取一个或者多个key的值 m代表多建操作

127.0.0.1:6379> mget <k1> <k2> <k3>

12)同时添加一个或者多个key,当且仅当所有给定的key都不存在

127.0.0.1:6379> msetnx <k1> <v1> <k2> <v2>

13)获取值的子串 C语言索引从0开始!

127.0.0.1:6379> getrange <key> <start> <end>

14)从指定的开始位置覆盖旧值

127.0.0.1:6379> setrange <key> <start> <value>

15)同时设置值和过期时间 手机验证码就是这个 set expire

127.0.0.1:6379> setex <key> <seconds> <value>

16)设置新值的同时获取旧值

127.0.0.1:6379> getset <key> <value>

4.4 List

4.4.1 特点

(1)单键多值
(2)Redis List是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
(3)它的底层实际是个双向链表(Java中list单向),对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
在这里插入图片描述
表示整个集合:[o.-1] 或 [-1,-6] 但是随着加入新的值,会发生变化,比如-6变为-7…而[0,-1]是不变的。

4.4.2 常用操作

1)从左边插入一个或多个值

127.0.0.1:6379> lpush <key> <element…> 

2)从右边插入一个或多个值

127.0.0.1:6379> rpush <key> <element…>

3)从左边删除一个值(值在键在,值光键亡)

127.0.0.1:6379> lpop <key> 

4)从右边删除一个值(值在键在,值光键亡)

127.0.0.1:6379> rpop <key> 

5)从key1列表右边删除一个值,插入到key2列表左边

127.0.0.1:6379> rpoplpush <key1> <key2>

6)按照索引下标范围获取元素(从左到右)

127.0.0.1:6379> lrange <key> <start> <stop>

7)按照索引下标获取元素(从左到右)

127.0.0.1:6379> lindex <key> <index>

8)获取列表长度

127.0.0.1:6379> llen <key>

9)在指定的前面或者后面插入

127.0.0.1:6379> linsert <key> before|after <pivot> <element>

10) 从左边删除count个指定的value

127.0.0.1:6379> lrem <key> <count> <element>

4.5 Set

4.5.1 特点

(1)set中的元素是无序不重复的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,
(2)Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
4.5.2 常用操作
1)将一个或者多个member元素加入到集合中,已经存在的member将被忽略

127.0.0.1:6379> sadd <key> <member…>

2)取出集合的所有值

127.0.0.1:6379> smemebers  <key>

3)判断集合是否包含指定的member,包含返回1,不包含返回0

127.0.0.1:6379> sismember <key> <member>

4)返回集合的元素个数

127.0.0.1:6379> scard <key>

5)从集合中删除指定的元素

127.0.0.1:6379> srem <key> <member…>

6)随机从集合中删除一个值,会从集合中返回删除的值

127.0.0.1:6379> spop <key>

7)随机从集合中取出n个值,不会从集合中删除 随机抽取n个幸运观众

127.0.0.1:6379> srandmember <key> <count>

8)返回多个集合的交集元素

127.0.0.1:6379> sinter <key…>

9)返回多个集合的并集元素

127.0.0.1:6379> sunion <key…> 

10)返回多个集合的差集元素

127.0.0.1:6379> sdiff <key…> 

在这里插入图片描述

4.6 Hash

4.6.1 特点

(1)Redis hash是一个键值对集合
(2)Redis hash的值是由多个field和value组成的映射表
(3)类似Java里面的Map<String,Object>

4.6.2 分析一个问题: 现有一个User 对象,在Redis中如何存?

1)第一种方案: 用户ID为key ,VALUE为JavaBean序列化后的字符串
在这里插入图片描述
2)第二种方案: 用户ID+属性名作为key, 属性值作为Value.
在这里插入图片描述
3)第三种方案: 通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题
在这里插入图片描述

4.6.3 常用操作

1)给集合中添加指定的 -

127.0.0.1:6379> hset <key>  [<field> <value>]

2)给集合中添加指定的 - ,当指定的field不存在时

127.0.0.1:6379> hsetnx <key> <field> <value> 

3)取出集合中指定field的value

127.0.0.1:6379> hget <key> <field> 

4)判断集合中是否存在指定的field

127.0.0.1:6379> hexists <key> <field> 

5)列出集合中所有的field

127.0.0.1:6379> hkeys <key> 

6)列出集合中所有的value

127.0.0.1:6379> hvals <key> 

7)给集合中指定filed的value值增加increment

127.0.0.1:6379> hincrby  <key> <field> <increment> 

在这里插入图片描述
Hsetnx只能加一个属性

4.7 zset (sorted set)

4.7.1 特点

(1)Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
(2)因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

4.7.2 常用操作

1)往集合中添加指定的 member 及score

127.0.0.1:6379> zadd <key> [<score> <member>]

2)从集合中取出指定下标范围的数据,正序取

127.0.0.1:6379> zrange <key> <start> <stop> [WITHSCORES] 

3)从集合中取出指定下标范围的数据,倒序取

127.0.0.1:6379> zrevrange <key> <start> <stop> [WITHSCORES] 

4)从集合中取出指定score范围的数据,默认从小到大

127.0.0.1:6379> zrangebyscore <key> <min> <max> [WITHSCORES]

5)从集合中取出指定score范围的数据,从大到小

127.0.0.1:6379> zrevrangebyscore  <key>  <max> <min> [WITHSCORES]

6)给集合中指定member的score增加increment

127.0.0.1:6379> zincrby <key> <increment> <member>

7)删除集合中指定的member

127.0.0.1:6379> zrem <key> <member…>

8)统计指定score范围的元素个数

127.0.0.1:6379> zcount <key> <min> <max>

9)返回集合中指定member的排名,排名从0开始

127.0.0.1:6379> zrank   <key>  <member>

操作命令不区分大小写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值