通过set 设key value 。通过get key 取对应的key 取value ,使用dbsize 查看当前数据库 数据个数。
通过 del key … 可以删除多个key对应的value ,integer表示 删除成功数
exists key 判断对应的key是否存在,nil表示null
不同数据库数据是独立的,目前不能从其它数据库查数据
select 数据库编号 ## 选择数据库
move key index 将指定的key 转移到指定的数据库
move name 1
persist key 移除key的生存时间 使key永久生效
redis> SET mykey "Hello"
OK
redis> EXPIRE mykey 10 # 为 key 设置生存时间
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey # 移除 key 的生存时间
(integer) 1
redis> TTL mykey
(integer) -1
type key 返回数据的 数据类型
返回 key 的数据类型,数据类型有:
select index 切换数据库
select 1
setex (expire)key second value 设置key的存在时限。**setnx (not exists)key value** 设置一个数据库中没有的key, 如果该key存在设置失败
(如果存在的,会覆盖原有的key,并给与新的生存时间)
set key value
set user:1 {username:zhangsan,age:1}
redis hash 是一个(String类型的)field 和 value 的一个映射表,一般用来存储对象。(一个hash表 表示一个对象,一个对象中有多个 k,v值(f,v值))
Redis 中每个 hash 可以存储 2的32次方 - 1 个键值对(40多亿)
可以将hash理解成 一张表 表有多个键值对组成
hdel key(表) field ,hget key field , hset key field value 从myhash表中删除field对应的值
hexists key(表) field ,从hash表中 查看对应field字段是否存在,存在打印1,否则0
HincrBy key(表) field increment 对指定hash表中某一字段 增量相加 没有key的话会自动创建哦
Hmget 获取hash表中 多个指定字段的值
Hmset 往hash表 中 设置多个值
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2的32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
注意:虽然list 本质上是一个key 但是不能用 get lists 获取list中的值
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
sdiff key1 key2 比较两个集合的差异
redis> SADD key1 "a" (integer) 1 redis> SADD key1 "b" (integer) 1 redis> SADD key1 "c" (integer) 1 redis> SADD key2 "c" (integer) 1 redis> SADD key2 "d" (integer) 1 redis> SADD key2 "e" (integer) 1 redis> SDIFF key1 key2 1) "a" 2) "b"
sInterStore destination key1 key2 取两个集合的交集 存储在 destination中
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "foo"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "world"
(integer) 1
redis 127.0.0.1:6379> SINTERSTORE myset myset1 myset2
(integer) 1
redis 127.0.0.1:6379> SMEMBERS myset
1) "hello"
Spop key count 随机中set中取出count个 数据
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
zadd key score member… 向zset集合中 插入一些值,附带double/int数(用来比较大小排序)
zrange key start end withScores 列出zset集合的指定位置元素 并携带分数
zcard key 算出zset中的集合个数
redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
5) "google.com"
6) "10"
# 移除单个元素
redis 127.0.0.1:6379> ZREM page_rank google.com
(integer) 1
redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
1) "bing.com"
2) "8"
3) "baidu.com"
4) "9"
什么是基数?(不重复的数据元素的个数)
1、比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
为什么要用hyperLogLog 算法?
HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。(占用空间小)
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
pfadd key element 往key中放元素 ,注意:不能放重复的(与set/zset类似)
pfcount key 计算key中的基数(不重复的数据个数)
pfMerge hyper hyper1 hyper2 合并多个hyperloglog 成一个hyper
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有:
geoadd:添加地理位置的坐标。 (要使用必先 导入对应的全部地理坐哦)
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
geoAdd 可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中。
geoPos 返回 表中 指定名称的 经纬度
geoRadiusByMember 更geoRadius同样的用法 只不过不是经纬度定位中心 而是以表中成员来定位中心(不过好像不稳)
geospatial底层采用的是zset 因此可以用对应的zset命令来删除对应的数据
位图一般由二进制0,1表示,常用来显示两种状态。例如:打卡,未打卡。迟到,未迟到
具体信息用时再查