Redis数据类型

Redis操作

一、key键操作

(一)设置key-value

[root@localhost admin]# /usr/local/bin/redis-server /etc/redis.conf 
[root@localhost admin]# /usr/local/bin/redis-cli 
127.0.0.1:6379> set key1 value1 
OK
127.0.0.1:6379> set key2 value2 
OK
127.0.0.1:6379> set key3 value3 
OK
127.0.0.1:6379> 

(二)查询key

  • 查询所有
127.0.0.1:6379> keys *
1) "key3"
2) "key1"
3) "key2"
  • 查询单个
127.0.0.1:6379> exists k1
(integer) 0
127.0.0.1:6379> exists key1
(integer) 1
  • 查询类型
127.0.0.1:6379> type key1
string
  • 删除
  • del 立即删除
  • unlink 异步删除
127.0.0.1:6379> del key3
(integer) 1
127.0.0.1:6379> unlink key2
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
  • 设置过期时间,单位s
  • -2表示过期
  • -1表示永不过期
127.0.0.1:6379> expire key3 15
(integer) 1
127.0.0.1:6379> ttl key3
(integer) 9
127.0.0.1:6379> ttl key3
(integer) -2
127.0.0.1:6379> ttl key2
(integer) -1
  • 查询key的个数
  • dbsize
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> dbsize
(integer) 2

  • 切换数据库
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> 
  • 清空当前库
127.0.0.1:6379> flushdb
OK
  • 清空所有库
127.0.0.1:6379> flushall
OK

二、字符串

  • 设置值
127.0.0.1:6379> set key1 value1 
OK
  • 取值
127.0.0.1:6379> get key1
"value1"
  • 追加值
127.0.0.1:6379> append key1 value001
(integer) 14
127.0.0.1:6379> get key1
"value1value001"
  • 值长度
127.0.0.1:6379> strlen key1
(integer) 14
  • 不覆盖设置值
127.0.0.1:6379> setnx key1 123
(integer) 0
127.0.0.1:6379> setnx key4 value4
(integer) 1
  • 加减值
127.0.0.1:6379> setnx key5 500
(integer) 1
127.0.0.1:6379> incr key5
(integer) 501
127.0.0.1:6379> decr key5
(integer) 500
127.0.0.1:6379> incrby key5 10
(integer) 510
127.0.0.1:6379> decrby key5 20
(integer) 490
  • 多个赋值
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
  • 多个取值
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
  • 多个不覆盖设置值
127.0.0.1:6379> msetnx k1 v1 k2 v2 k3 v3
(integer) 0
127.0.0.1:6379> msetnx k11 v11 k22 v22 k33 v33
(integer) 1
  • 字符串截取
127.0.0.1:6379> setrange key offset value
127.0.0.1:6379> getrange key start end
  • 设值时设置过期时间
127.0.0.1:6379> setex key seconds value
  • 获取并替换值
127.0.0.1:6379> getset key value

三、链表

  • 头部添加lpush
127.0.0.1:6379> lpush k1 v1 v2 v3
(integer) 3
127.0.0.1:6379> lrange k1 0 5
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> lrange k1 0 -1
1) "v3"
2) "v2"
3) "v1"
  • 尾部添加rpush
127.0.0.1:6379> rpush k2 v1 v2 v3
(integer) 3
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "v2"
3) "v3"
  • 头部取值lpop
  • 尾部取值rpop
127.0.0.1:6379> lrange k1 0 -1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> lpop k1
"v3"
127.0.0.1:6379> rpop k1
"v1"
127.0.0.1:6379> lrange k1 0 -1
1) "v2"
  • rpoplpush
  • key1尾部取值加入key2头部
127.0.0.1:6379> rpoplpush k1 k2
"v2"
127.0.0.1:6379> lrange k2 0 -1
1) "v2"
2) "v1"
3) "v2"
4) "v3"
  • 获取长度llen
127.0.0.1:6379> llen k2
(integer) 4
  • linsert key BEFORE|AFTER pivot element
  • 链表的第一个指定值前/后插入一个值
127.0.0.1:6379> linsert k2 before "v2" "v22"
(integer) 5
127.0.0.1:6379> lrange k2 0 -1
1) "v22"
2) "v2"
3) "v1"
4) "v2"
5) "v3"
  • lrem key count element
  • 删除key的n个指定元素
127.0.0.1:6379> lrem k2 2 "v2"
(integer) 2
127.0.0.1:6379> lrange k2 0 -1
1) "v22"
2) "v1"
3) "v3"
  • lset key index element
  • 替换索引为n的值为指定值
127.0.0.1:6379> lset k2 0 "v2"
OK
127.0.0.1:6379> lrange k2 0 -1
1) "v2"
2) "v1"
3) "v3"

四、Set集合

  • sadd key member [member …]
  • 设置集合的值
127.0.0.1:6379> sadd k1 v1 v2 v3
(integer) 3
  • smembers k1
  • 查看集合的值
127.0.0.1:6379> smembers k1
1) "v3"
2) "v1"
3) "v2"
  • sismember key member
  • 查看集合是否存在某值
127.0.0.1:6379> sismember k1 v1
(integer) 1
127.0.0.1:6379> sismember k1 v4
(integer) 0
  • scard key
  • 查看集合长度
127.0.0.1:6379> scard k1
(integer) 3
  • srem key member [member …]
  • 移除集合指定值
127.0.0.1:6379> srem k1 v3
(integer) 1
  • spop key [count]
  • 随即吐出一个值
127.0.0.1:6379> spop k1
"v1"
127.0.0.1:6379> spop k1
"v2"
127.0.0.1:6379> spop k1
(nil)
  • srandmember key [count]
  • 随即取出n个值
127.0.0.1:6379> srandmember k1 2
1) "v3"
2) "v1"
127.0.0.1:6379> srandmember k1 2
1) "v1"
2) "v2"
  • smove source destination member
  • 将集合中的一个值移动到另一个集合
  • v3存在于k1,k2,集合中的值唯一
127.0.0.1:6379> sadd k2 v3 v4 v5
(integer) 3
127.0.0.1:6379> smove k1 k2 v3
(integer) 1
127.0.0.1:6379> smembers k2
1) "v5"
2) "v3"
3) "v4"
  • sinter key [key …]
  • 取交集
127.0.0.1:6379> sinter k1 k2
1) "v3"
  • sunion key [key …]
  • 取并集
127.0.0.1:6379> sunion k1 k2
1) "v1"
2) "v2"
3) "v3"
4) "v5"
5) "v4"
  • sdiff key [key …]
  • 取差集,存在于第一个key,不存在于第二个key集合
127.0.0.1:6379> sdiff k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> sdiff k2 k1
1) "v5"
2) "v4"

五、哈希

  • hset key field value [field value …]
  • 添加数据
127.0.0.1:6379> hset user id 1
(integer) 1
127.0.0.1:6379> hset user name jack
  • hget key field
  • 获取数据
127.0.0.1:6379> hget user id
"1"
  • hmset key field value [field value …]
  • 添加多个数据
  • hmget key field [field …]
  • 获取多个数据
127.0.0.1:6379> hmset user sex male age 30
OK
127.0.0.1:6379> hmget user id name sex age
1) "1"
2) "jack"
3) "male"
4) "30"
  • hexists key field
127.0.0.1:6379> hexists user id
(integer) 1
  • hkeys key
127.0.0.1:6379> hkeys user
1) "id"
2) "name"
3) "sex"
4) "age"
  • hvals key
127.0.0.1:6379> hvals user
1) "1"
2) "jack"
3) "male"
4) "30"
  • hincrby key field increment
127.0.0.1:6379> hincrby user age 6
(integer) 36
127.0.0.1:6379> hvals user
1) "1"
2) "jack"
3) "male"
4) "36"
  • hsetnx key field value
127.0.0.1:6379> hsetnx user age 20
(integer) 0

Zset

  • zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
  • 添加数据
127.0.0.1:6379> zadd rank 200 java 300 javascript 400 php 500 golang
(integer) 4
  • zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
  • 查询所有数据
127.0.0.1:6379> zrange rank 0 -1
1) "java"
2) "javascript"
3) "php"
4) "golang"
127.0.0.1:6379> zrange rank 0 -1 withscores
1) "java"
2) "200"
3) "javascript"
4) "300"
5) "php"
6) "400"
7) "golang"
8) "500"
  • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
  • 查询指定范围数据
127.0.0.1:6379> zrangebyscore rank 300 500
1) "javascript"
2) "php"
3) "golang"
127.0.0.1:6379> zrangebyscore rank 300 500 withscores
1) "javascript"
2) "300"
3) "php"
4) "400"
5) "golang"
6) "500"
  • z+rev+range
  • 从大到小排序查询
127.0.0.1:6379> ZREVRANGE rank 0 -1 withscores
1) "golang"
2) "500"
3) "php"
4) "400"
5) "javascript"
6) "300"
7) "java"
8) "200"
  • zincrby key increment member
  • 指定元素增加
127.0.0.1:6379> zincrby rank 150 java
"350"
127.0.0.1:6379> ZREVRANGE rank 0 -1 withscores
1) "golang"
2) "500"
3) "php"
4) "400"
5) "java"
6) "350"
7) "javascript"
8) "300"
  • zrem key member [member …]
  • 删除
  • zcount key min max
  • 查询指定范围内元素个数
  • zrank key member
  • 查询指定元素排名
127.0.0.1:6379> zrank rank java
(integer) 1
127.0.0.1:6379> zrevrank rank java
(integer) 2

六、Bitmaps

  • Bitmaps本质是个字符串,但是可以进行位操作
  • 8为代表一个字符

在这里插入图片描述

  • setbit key offset value
  • 设置指定偏移量的值,0/1
127.0.0.1:6379> setbit users 1 1
(integer) 0
127.0.0.1:6379> setbit users 3 1
(integer) 0
127.0.0.1:6379> setbit users 5 1
(integer) 0
127.0.0.1:6379> setbit users 7 1
(integer) 0
127.0.0.1:6379> setbit users 9 1
(integer) 0
  • getbit key offset
  • 获取指定偏移量的值
127.0.0.1:6379> getbit users 9
(integer) 1
  • bitcount key [start end]
  • 获取key中1的数量
  • [start end]中代表一个字节所占的8位,而不是1位
  • -1表示最后1位
127.0.0.1:6379> bitcount users 0 0
(integer) 4
127.0.0.1:6379> bitcount users 0 1
(integer) 5
127.0.0.1:6379> bitcount users 0 -1
(integer) 7
  • bitop operation destkey key [key …]
  • 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
    operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种:
    BITOP AND destkey key [key …] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
    BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
    BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
    BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey 。
redis> SETBIT bits-1 0 1        # bits-1 = 1001
(integer) 0

redis> SETBIT bits-1 3 1
(integer) 0

redis> SETBIT bits-2 0 1        # bits-2 = 1011
(integer) 0

redis> SETBIT bits-2 1 1
(integer) 0

redis> SETBIT bits-2 3 1
(integer) 0

redis> BITOP AND and-result bits-1 bits-2
(integer) 1

redis> GETBIT and-result 0      # and-result = 1001
(integer) 1

redis> GETBIT and-result 1
(integer) 0

redis> GETBIT and-result 2
(integer) 0

redis> GETBIT and-result 3
(integer) 1

七、HyperLogLog

  • pfadd key element [element …]
  • 添加元素,自动去重
127.0.0.1:6379> pfadd id 1
(integer) 1
127.0.0.1:6379> pfadd id 2
(integer) 1
127.0.0.1:6379> pfadd id 3
(integer) 1
127.0.0.1:6379> pfadd id 1
(integer) 0
  • PFCOUNT key [key …]
  • 查看基数数量
127.0.0.1:6379> PFCOUNT id
(integer) 3
  • PFMERGE destkey sourcekey [sourcekey …]
  • 合并
127.0.0.1:6379> pfadd num 4 5
(integer) 1
127.0.0.1:6379> PFMERGE merge id num
OK
127.0.0.1:6379> PFCOUNT merge
(integer) 5

八、Geospatial

  • geoadd key [NX|XX] [CH] longitude latitude member [longitude latitude member …]

  • 添加坐标

GEOADD city 111.00 28.00  bj
(integer) 1
  • geopos key member [member …]
  • 获取坐标
127.0.0.1:6379> GEOPOS city bj
1) 1) "110.99999874830245972"
   2) "27.99999879696989069"
  • geodist key member1 member2 [m|km|ft|mi]

  • 获取两点间距离

127.0.0.1:6379> GEOADD city 128.00 32.00 sh
(integer) 1
127.0.0.1:6379> GEODIST city bj sh
"1694783.0049"
  • GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STORE
  • 获取以某点为圆心,半径xxx中是否存在坐标点
127.0.0.1:6379> GEORADIUS city 120 30 500 km
(empty array)
127.0.0.1:6379> GEORADIUS city 120 30 1000 km
1) "sh"
2) "bj"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值