Redis常用操作

Redis-key

> keys *      #查看所有key
> set name value      #设置键值
> exists name  # 判断key 是否存在
> expire name 10  # 设置key的过期时间,单位是秒
> ttl name  # 查看当前key的剩余过期时间
> type age  # 查看当前key的类型

 数据类型

1、String

> set key1 v1   #设置值
> append key1 "hello"  # 追加值,如果不存在,相当于 set key
> strlen key1  # 获取字符串长度

> incr views    # 自增 1
> decr views    # 自减 1

> incrby views 10  # 设置步长、自增 10 
> decrby views 5      # 设置步长、自减 5

> getrange key 0 3  # 截取字符串[0, 3]

> setrange key2 1 xx  # 替换从下标1开始的字符串为xx,保留尾部剩余

> setex key3 30 "hello"  # 设置 30 秒后过期
> setnx mykey "redis"   # mykey 不存在时设置成功

> mset k1 v1 k2 v2 k3 v3  # 同时设置多个键值
> mget k1 k2 k3   # 同时获取多个值

> getset db redis  # 如果不存在值,则返回 nil

String 的使用场景:value 除了是字符串以外还可以是数字

  • 计数器

  • 统计多单位的数量

  • 粉丝数

  • 对象缓存存储

2、List(列表)

> lpush list one   # 将一个值或者多个值,插入到列表的头部(左)

> lrange list 0 -1   # 查看全部元素

> lpop list  # 移除list的第一个元素

> lindex list 1  # 通过下标获取list中的某一个值

> llen list     #获取list长度

> lrem list 1 value  # 移除list集合中指定个数的value

> ltrim mylist 1 2 # 通过下标截取指定长度,这个list已经被破坏了,截断之后只剩下截断后的元素

> rpoplpush list newlist  # 移除列表的最后一个元素,将他移动到新的列表中

> lset list 0 item  # 将列表中指定下标的值替换为另一个值,如果不存在的话,更新会报错(error) ERR no such key

> linsert list before "hello2" hello  # 在hello2前插入hello
> linsert list after "hello2" hello  # 在hello2后插入hello
  • list 实际上是一个链表,前后都可以插入

  • 如果key不存在,创建新的链表

  • 如果移除了所有的值,空链表,也代表不存在

  • 在两边插入或者改动值,效率最高。

3、Set (集合)

> sadd myset "hello"  # set 集合中添加元素,元素不重复
> smembers myset      # 查看指定Set的所有值
> sismember myset hello  # 判断某一个值是不是在set中

> scard myset  # 获取集合中的个数
> srem myset hello   # 移除元素
> srandmember myset   # 随机获取一个元素,不改变集合
> spop myset  # 随机删除元素

> smove myset myset2 "kkk"   # 将kkk,移动到另一个set集合中

> sdiff key1 key2   # 差集;key1中存在,key2不存在的集合

4、Hash(哈希)

> hset myhash field xxx  # set 一个 key-value
> hget myhash field   # 获取一个字段值

> hmget myhash field field1 field2   # 获取多个字段值

> hdel myhash field1  # 删除指定的key,对应的value也就没有了

> hgetall myhash  # 获取hash内所有值

> hlen myhash  # 获取长度

> hexists myhash field1   # 判断指定key是否存在

> hkeys myhash  # 获取所有的key

> hincrby myhash field3 1  # 指定增量

> hsetnx myhash field4 hello  # 如果不存在则可以设置

Hash 适合存储经常变动的对象信息,String 更适合于存储字符串。

5、zset (有序集合)

> zadd myset 1 one  # 添加一个值

> zadd myset 2 two 3 three # 添加多个值

> zrange myset 0 -1  # 获取所有元素

> zrevrange myset 0 -1  # 从大到小进行排序

> zrangebyscore myset -inf +inf  # 从小到大显示全部的数据

> zrangebyscore myset -inf +inf withscores   # 附带成绩的显示所有数据

> zrangebyscore myset -inf 2500 withscores   # 显示score小于 2500 的数据

> zrem myset xiaohong  # 移除特定元素

> zcard myset # 获取有序集合的个数

> zcount myset 1 3  # 获取指定score区间的人员数量

6、geospatial

Redis 在 3.2 推出 Geo 类型,该功能可以推算出地理位置信息,两地之间的距离

> geoadd china:city 116.40 39.90 beijing  # 添加单个地理位置
> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shengzhen  # 添加多个地理位置

> geopos china:city shanghai  # 获取当前定位坐标值


> geodist china:city beijing shanghai km  # 查看北京和上海直接的直线距离,单位 m:米 km:千米 mi:英里 ft:英尺

> georadius china:city 110 30 1000 km # 以110, 30 这个点为中心,寻找方圆 1000km 的城市

7、hyperloglog

这个数据结构常用于统计网站的 UV。传统的方式是使用 set 保存用户的ID,然后统计 set 中元素的数量作为判断标准。

但是这种方式保存了大量的用户 ID,ID 一般比较长,占空间,还很麻烦。我们的目的是计数,不是保存数据,所以这样做有弊端。但是如果使用 hyperloglog 就比较合适了。

> pfadd mykey a b c d e f g h i j # 创建第一组元素
> pfcount mykey     # 统计 mykey 基数
> pfmerge mykey3 mykey mykey2  # 合并两组到新的组mykey3 

8、bitmap 位图

bitmap就是通过最小的单位bit来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。

bitmap 常用于统计用户信息比如活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等

> setbit sign 0 1  # 设置下标 0 的值为 1

> getbit sign 0    # 获取下标 0 的值

> bitcount sign    # 获取 值为 1 的数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值