Redis之二:Redis 常用命令

Redis 命名不区分大小写

0.登录远程服务器

如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

语法
$ redis-cli -h host -p port -a password

获取配置信息:

CONFIG GET CONFIG_SETTING_NAME

例:

CONFIG GET loglevel 

CONFIG GET *   #  获取所有配置信息

Redis 数据类型

Redis支持五种数据类型:

string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string 是 redis 最基本的类型,string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

举例:

1、set name “zhang”             # 键值对  name赋值

2、get name                     # 通过name 取值

3、del name                     # 删除 移除键值

4、set name wang                # key相同 则覆盖

5、mset age 12 sex "男"         # 同时赋值多个,注意成对。否则异常报错

6、Mget age name sex            # 同时打印多个值 ,根据key

7、Getrange name 0 3            # 获取子串

8、Incr age                     # 对age 自增操作

9、Incrby age 4                 # 对age 加上指定 数

10、Decr age                    # 对age 做减一操作

11、Decrby age 5                # 对age 减去指定值

12、Exists name                 # 判断键是否存在

13、Strlen name                 # 获取键值的字符个数

14、Append name “abc”           # 给原有的字符串追加字符串

15、Getset name zhangsan        # 给键name赋值同时返回原有的旧值

下面关于key的有效期限:

16、expire name 10           # 设置name的过期时间 单位秒

17、ttl name                 # 查看剩时 不存在返回-2 存在且永不过期-1  

18、persist name             # 移除 key 的过期时间,key 将持久保持。

19、 set name zhang ex 10    # 设置键值同时指定过期时间10s .

20、set name zhang px 10000  # 单位是毫秒  nx  单位是纳秒

21、pttl name                # 获取剩余的毫秒数

22、randomkey                # 随机从数据库返回键

切换数据库

默认提供16个 数据库名分别为 0~15

1、 select 1                  # 切换为数据库1 为数据库的编号

2、Select 2                   # 切换为数据库2,所操作的数据是不同的

3、Select 16                  # 会报错,不存在16的数据库
Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)

#person为对象名,后面为属性键值对(多个)
1、Hmset person id 1 name “zhangsan” age 23 

2、Hset person sex “男”        # 对象单个属性赋值

3、Hmget person id             # 打印person对象的id属性的值

4、Hmget person id name        # 同时打印person 对象id和name 属性值 

5、Hgetall person              # 取出所有属性

6、Hdel person age             # 删除对象的属性

7、Hlen person                 # 对象中属性个数

8、Hmget person age name       # 同时取出对象中多个属性的值

9、Hkeys    person             # 取出所有属性

10、Hvals person               # 取出所有值
List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

1、Lpush  fruit apple    # 在list对象fruit中放入apple

2、Lpush fruit orange    # 在list对象fruit中放入orange

3、Lpush fruit banana    # 在list对象fruit中放入banana

4、Lrange fruit 0  2     # 按下标取三个元素 后面索引号 可以大于总个数。 

5、Lrange fruit 0 -1     # 取出全部元素

# 下面同时放入多个元素

6、Lpush words A B C     # 在左边头部插入  结果为 C B A

7、Rpush words E F G     # 在右边尾部追加  结果为 C B A E F G

8、Llen words            # 列表元素个数

9、Lpop words            # 弹出移除队头元素并输出

10、Rpop words           # 移除弹出队尾最后元素并输出

11、Lset words 2 H       # 在指定位置插入元素(覆盖)

12、Lindex words 2       # 获取列表中指定位置上元素

13、Ltrim words 2 4      # 删除列表中从2到4的之外元素

14、Lrem words 2 “A”     #删除2个元素值为”A”的元素

15、Blpop list1 list2 10    
#在指定的时间内10秒,从左到右扫描list1,list2 对第一个非空list做pop操作,如果找到非空完成一个pop则停止。如果全部为空,则在指定时间内等待,如果超时则停止。等待期间,如果其他客户在list放入元素,则会执行pop 后结束

16、Rpoplpush list1 list2 # 从list1头部移除元素到list2尾部
Set(集合)

Redis 的 Set 是 string 类型的无序集合。

  • 具有唯一、无序的集合特点

  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 语法:

    sadd collname element1 element2 element3

    smembers collname

案例:

1、Sadd myset A B C D A           # 在myset集合放入ABCD四个元素,A重复,不能放入

2、Smembers myset                 # 读取myset 集合元素内容

3、Srem myset A                   # 移除myset集合中元素 A

4、Spop myset                     # 随机弹出一个元素

5、Scard myset                    # 元素个数

6、Smove set1 set2 A              # 从set1集合中移除元素A 到set2集合中

7、Sismember set1 A               # 判断set1集合中是否包含A元素

8、Sinter set1 set2               # 输出集合交集

9、Sinterstore dest set1 set2     # 计算set1 set2 交集存入dest集合

10、Sunion set1 set2              # 输出并集

11、Sunionstore dest set1 set2    # 并集  存入dest集合

12、Sdiff set1 set2               # 差集
zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。分数相当于权重。

zset的成员是唯一的,但分数(score)却可以重复。

zadd 命令: 添加元素到集合,元素在集合中存在则更新对应 score

语法:zadd key score member

案例:

1、Zadd mycoll 1 zhang     # 向 mycoll 集合中添加 zhang 分值为1

2、Zadd mycoll 3 wang      # 向 mycoll 集合中添加 wang 分值为3

3、Zadd mycoll 0 zhao      # 向 mycoll 集合中添加 zhao 分值为0

4、Zadd mycoll 1 lisi 2 liusan         # 一次性添加多个元素成员

5、Zrange mycoll 0 5                   # 取出从0到5的元素,默认无序显示

6、Zrangebyscores mycoll 0 5           # 按分数从小到大显示0到5元素

7、Zrangebyscores mycoll 0 5 limit 2   # 排序 显示0-5 中的前2个元素

8、Zrange mycoll 0 5 withscores        # 显示元素及其分数

9、zcount mycoll 2 5                   # 显示分数为2和5之间的元素个数

10、zrank mycoll  wang                 # 返回 元素 wang 在集合中的排名

11、zrevrange my 0 -1 withscores       # 降序排列显示全部

12、zrem  my AAA                       # 移除指定元素

13、zcard my                           # 获取指定集合中元素数量

14、zpopmax mycoll  1                  # 移除并返回1个分数最高的元素

15、zpopmin mycoll 1                   # 移除并返回1个分数最高的元素
特殊类型
Geospatial 地理位置

朋友的定位,周边的朋友,打车距离计算?

Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!

命令:GEOADDkey longitude latitude member [longitude latitude member]

将指定的地理空间位置(纬度、经度、名称)添加到指定的key

命令:GEOPOS key member [member ...]

key里返回所有给定位置元素的位置(经度和纬度)

命令:GEODIST key member1 member2 [unit]

返回两个给定位置之间的距离。

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。

命令:GEORADIUSkey longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

范围可以使用以下其中一个单位:m km mi ft

在给定以下可选项时, 命令会返回额外的信息:

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
127.0.0.1:6379> geoadd china 116.40 39.90 beijing         ### 将 beijing 经纬度添加到 key:china 中
(integer) 1
127.0.0.1:6379> geoadd china 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china 106.50 29.53 chongqi 114.05 22.52 shenzhen
(integer) 2
127.0.0.1:6379> geoadd china 120.16 30.24 hangzhou 108.96 34.26 xian ## 将 两个城市 经纬度添加到 key:china 中
(integer) 2
127.0.0.1:6379> geopos china beijing        #### 查看 beijing 的经纬度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> geopos china shanghai
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"
127.0.0.1:6379> geodist china shanghai beijing  ##### 计算两个城市间距离  默认单位 m
"1067378.7564"
127.0.0.1:6379> geodist china shanghai beijing km    
"1067.3788"
127.0.0.1:6379> georadius china 116 39 1000 km    ### 找出以116,39为中心点,半径1000km 以内的城市有那几个
1) "beijing"
2) "shanghai"
3) "xian"
127.0.0.1:6379> georadius china 116 39 200 km
1) "beijing"
127.0.0.1:6379> georadius china 116 39 1000 km withdist  ### 捎带距离中心点的城市的具体距离
1) 1) "beijing"
   2) "105.8343"
2) 1) "shanghai"
   2) "996.7785"
3) 1) "xian"
   2) "819.7858"
127.0.0.1:6379> 
信息查询
INFO [section]

起始版本:1.0.0

INFO命令以一种易于理解和阅读的格式,返回关于Redis服务器的各种信息和统计数值。

通过给定可选的参数 section ,可以让命令只返回某一部分的信息:

  • server: Redis服务器的一般信息
  • clients: 客户端的连接部分
  • memory: 内存消耗相关信息
  • persistence: RDB和AOF相关信息
  • stats: 一般统计
  • replication: 主/从复制信息
  • cpu: 统计CPU的消耗
  • commandstats: Redis命令统计
  • cluster: Redis集群信息
  • keyspace: 数据库的相关统计

它也可以采取以下值:

  • all: 返回所有信息
  • default: 值返回默认设置的信息
  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zp8126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值