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 # 同时打印多个值 ,根据key7、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中放入apple2、Lpush fruit orange # 在list对象fruit中放入orange3、Lpush fruit banana # 在list对象fruit中放入banana4、Lrange fruit 0 2 # 按下标取三个元素 后面索引号 可以大于总个数。 5、Lrange fruit 0 -1 # 取出全部元素# 下面同时放入多个元素6、Lpush words A B C # 在左边头部插入 结果为 C B A7、Rpush words E F G # 在右边尾部追加 结果为 C B A E F G8、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集合中元素 A4、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 分值为12、Zadd mycoll 3 wang # 向 mycoll 集合中添加 wang 分值为33、Zadd mycoll 0 zhao # 向 mycoll 集合中添加 zhao 分值为04、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
: 值返回默认设置的信息