Redis 入门及五大数据类型介绍

Redis:远程字典服务

特性:

  1. 内存存储
  2. 效率高,用于高速缓存
  3. 地图信息分析
  4. 计时器,计数器,订阅系统

redis是单线程的,基于内存操作

Redis基础命令

redis默认有16个数据库,使用select命令切换数据库

set key value //新增键值
get key //获取某一个键值
select 1 //切换数据库
DBSIZE //查看数据库大小
move key name //移除key
keys * //查看所有key
flushdb //清空当前所有数据库
flushall //清空所有数据库
EXISTS key //查询某键key是否存在
EXPIRE key time //设置过期时间
ttl key //查看key剩余时间
type key //查看key类型

五大数据类型

String类型

APPEND key string //在key后添加string,若key不错在,则创建key
STRLEN key //获取字符串长度
incr key //自增1 后面添加值可设置步长
decr key //自减1 后面添加值可设置步长
GETRANGE key start end  //查看指定范围字符串
SETRANGE key offset string //替换指定位置开始的字符串
setex key time value //新建key并设置过期时间
setnx key value//不存在则设置,若存在则覆盖
mset k1 v1 k2 v2…… //同时设置多个值
mget k1 k2…… //同时获取多个值
msetnx k1 v1 k2 v2…… //原子性操作,要么一起成功,要么一起失败
set user:1{name zhangsan age num……} //设置对象
getset key value //先获取再创建 若存在值,则获取原来值再设置新值

List类型

列表是指上是一个链表,在两边插入或改动值其效率更高,在中间改动值效率较低,可当作栈,队列、链表使用,常用于消息队列

LPUSH list num #列表头部插入值
RPUSH list num #再列表尾部插入值
LRANGE lsit #获取list值
LRANGE list start end #获取指定范围值
LPOP list #移除列表第一个元素
RPOP list #移除列表最后一个元素
LINDEX LIST num #通过下标获取值
LLEN list #获取列表长度
LREM list num #移除指定值
LREM list 2 num #移除指定数量的值
LTRIM list start end #获取指定范围值,list已被修改
rpoplpush list1 list2 #移除列表最后一个元素并移入新列表中
EXISTS list #判断列表是否存在
lset list 0 item #更新列表中指定位置值,若列表不存在则报错
LINSERT list before/after value num #再列表中的value值前面或后面插入num值


SET类型

SET值无序,不重复

sadd myset #向set中添加值
SMEMBERS myset #查看set中所有值
SISMEMBER myset value #判断value值是否在set集合中
scard myset #获取set集合中元素个数
srem myset value #移除set集合中指定元素
SRANDMERBER myset #随机取出一个元素
SRANDMERBER myset num #随机取出指定个数元素
SPOP myset #随机删除集合中元素
SDIFF myset1 myset2 #两个集合差集
SINTER myset1 myset2 #两个集合交集
SUNION myset1 myset2 #两个集合并集

HASH类型

以key-map形式存储,可用于存储变更的数据,适合对象的存储

hset myhash field1 value #添加key-value值
hget myhash field1 #获取一个字段值
hmset myhash field1 value1 field2 value2…… #设置多个key-value值
hmget myhash field field2 #获取多个字段值
hgetall myhash #获取全部数据
hdel myhash field #删除指定字段,其字段所对应的值也被删除
hlen myhash #获取hash字段数量
HEXISTS myhash field #判断某个field值是否存在
HINCRBY myhash field num #指定增量num
hsetnx myhash field value #如果不存在则设置,存在则不能设置

ZSETE类型

有序集合,在SET基础上添加了一个值

zadd myset salary 8000 zhangsan #添加值
zadd myset field1 value1 field2 value2…… #添加多个值
ZRANGEBYSCORE salary min(-inf) max(+inf) #从小到大显示全部用户
ARANGEBYSCORE salary min max withscores #显示全部的用户并且附带成绩
ZREVANGE salary 0 -1 #从大到小排序
zrem salary zhangsan #移除有序集合中的指定元素
zcard salary #获取有序集合中的个数
zcout salary 3000 12000 #获取指定区间成员数量
 

三种特殊数据类型

GEOSPATIAL地理空间

GEOADD 添加地理位置,常用于查找附近的人,附近好友等

GEOADD key longitude latitude member [longitude latitude member ...]

127.0.0.1:6379> geoadd city 13.3618 38.115556 "suzhou"
(integer) 1
127.0.0.1:6379> geoadd city 86.6723 018.3251 "chongqing"
(integer) 1
127.0.0.1:6379> geoadd city 32.6783 26.3642 "lanzhou"
(integer) 1


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

GEODIST key member1 member2 [unit]

unit为返回距离的单位,其值有:m,km,mi,ft,默认为m

127.0.0.1:6379> geodist city suzhou lanzhou
"2230774.1010"

**GEPHASH **返回一个或多个位置元素的 Geohash 表示

GEOHASH key member [member ...]
127.0.0.1:6379> geohash city suzhou
1) "sqc8b49z0w0"

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

GEOPOS key member [member ...]
127.0.0.1:6379> geopos city suzhou
1) 1) "13.36180239915847778"
   2) "38.11555639549629859"

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

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

可选参数:

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。

  • WITHCOORD: 将位置元素的经度和维度也一并返回。

  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。

    使用Count来筛选前count个元素

127.0.0.1:6379> georadius city 15.981 82.361 50000 km
1) "suzhou"
2) "lanzhou"
3) "chongqing"

GEORADIUSMEMBER GEORADIUS一样,但并不需要给出经纬度,而是由给定的位置元素以找出位于指定范围内的元素

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
127.0.0.1:6379> georadiusbymember city suzhou 3000 km
1) "suzhou"
2) "lanzhou"

HYPERLOGLOG

PFADD key element [element ...]

将除了第一个参数以外的参数存储到以第一个参数为变量名的HyperLogLog结构中

127.0.0.1:6379> pfadd myset1 1 3 5 6 8 9
(integer) 1
127.0.0.1:6379> pfadd myset2 1 2 4 6 7 8 0
(integer) 1


PFCOUNT key [key ...]

当参数为一个key时,返回存储在HyperLogLog结构体的该变量的近似基数,如果该变量不存在,则返回0

当参数为多个key时,返回这些HyperLogLog并集的近似基数

127.0.0.1:6379> pfcount myset1 myset2
(integer) 10
127.0.0.1:6379> pfcount myset1
(integer) 6
127.0.0.1:6379> pfcount myset2
(integer) 7


PFMERGE destkey sourcekey [sourcekey ...]

将多个 HyperLogLog 合并(merge)为一个 HyperLogLog , 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合(observed set)的并集

127.0.0.1:6379> pfmerge myset3 myset1 myset2
OK

Bitmap

用来存储只有两种状态的值,即0和1,如记录打卡次数,网站用户是否活跃

 setbit key offset value
127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 1
(integer) 0
127.0.0.1:6379> setbit sign 2 1
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 0
(integer) 0
127.0.0.1:6379> setbit sign 5 1
(integer) 0
127.0.0.1:6379> setbit sign 6 1
(integer) 0


获取某个属性值

getbit key offset

127.0.0.1:6379> getbit sign 5
(integer) 1


统计值为1个数

127.0.0.1:6379> bitcount sign
(integer) 6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值