认识Redis(二)redis的常用类型的命令

redis安装

基于windows安装和Linux安装
安装教程

预备知识

//redis命令不区分大小写

一个redis服务器默认有16个数据库(从015)
默认的端口号为:6379
测试连通:ping     ------>PONG(表示连通)
切换数据库:select 5 //切换到5号数据库
查看数据库大小:dbsize
查看所有的key: keys *
清空当前数据库:flushdb
清空全部数据库:flushall
//认识redis-key
判断件是否存在:exists key /*存在为1 否则为0*/
移动当前数据库的key到另一个数据库:move key 1 (这里为1号数据库)
过期实现:expire key 10 (10s后过期)
判断还有多久过期:ttl key
查看key的数据类型:type key
设置密码:config set requirepass "123456" //设置密码为123456
获取密码:config get requirepass
使用密码登录:auth 123456

五大基本数据类型

String(字符串)

为key添加字符串:set key1 'test'
追加字符串,如果key值不存在,相当于setkey: append key1 'hello' 
//key必须是数字
自增1:incr key 
自减1:incr key 
//步长
设置步长,增加10:incrby key 10 
				decrby key 5 
//字符串范围
set key1 "hello,redis"
截取字符串【0,3:getrange key1 0 3 
截取全部字符串,相当于get key1: getrange key1 0 -1 
替换指定位置字符串:setrange key1 1 o 
	返回结果: -> hollo,redis
	
设置key3的值为hello 30s过期: setex keys 30 'hello'
如果mykey不存在,创建mykey,否则创建失败:setnx mykey 'redis'
同时设置多个值:mset k1 v1 k2 v2 k3 v3
同时获取多个值:mget k1 k2 k3
原子操作,一起成功,一起失败:msetnx k1 v1 k4 v4
先get在set:getset db redis  --> nil
如果不存在则返回nil:get db 	-->redis
如果存在值,获取原来的值并设置新的值:
getset db mongodb ---->redis
get db            --->mongodb

List(集合,有序可重复)

大部分的list命令都是l开头

将一个值或多个值插入到列表头部(左):lpush list one
将一个值或多个值插入到列表尾部(右):rpush list two
获取list中的值:lrange list 0 -1
移除list的第一个元素:lpop list 
移除list的最后一个元素:rpop list 
通过下标获取list的第0个值:lindex list 0
返回列表长度:llen list
移除list集合中指定个数value: lrem list 1 one
通过下标截取长度: ltrim list 1 2
移除列表的最后一个元素并移动到新的列表中:rpoplpush
将列表中指定的下标值替换为另一个值(更新列表):lset list 0 'test'
将某个具体的value插入到列表中,可在before/after
linsert mylist after name "test"
  //链表
  before node after
  如果key值不存在,创建新的链表(优点:在两边插入或者改动效率最高)

Set(无序不重复)

大部分命令以s开头

添加元素:sadd myset hello
查看指定set的所有值:smembers myset
判断值是否在set集合中:sismember myset hello//存在 1 不存在 0
获取set集合中元素个数:scard myset
移除set中的指定元素:srem myset hello
随机抽选一个元素: srandmember myset
随机抽选多个元素:srandmember myset 3
随机删除set集合中的元素(用法同上):spop myset
将指定值移到另一个set集合中:smove myset myset2 hello
//数字类的交集,并集和差集
交集:sinter set1 set2
并集:sunion set1 set2
差集:sdiff set1 set2

Hash(散列)

以h开头的命令。hash是一个map集合,通过key-map(本质上是String)

设置一个k-v:hset myhash field1 hello
获得具体的值:hget myhash field1
设置多个k-v:hmset myhash field1 hello2 field2 hello3
获取多个字段值:hmget myhash field1 field2
获取全部数据:hgetall myhash //以k-v键值对显示
删除hash指定的key字段:hdel myhash field1
获取字段长度:hlen myhash
判断key是否存在: hexists myhash field1
获取所有的key: hkeys myhash
获取所有的value: hvals myhash
自增:hincrby 
自减:hdecrby
hash应用场景:变更数据(用户信息)

zset(有序集合)

在set基础上增加一个值,作为序号

添加值:zadd myset 1 one
添加多个值:zadd myset 2 two 3 three 4 four
遍历集合:zrange myset 0 -1
//eg: 可以实现排序
zadd salary 5000 zs
zadd salary 8000 ls
zadd salary 6500 ww
显示全部用户(按照工资从小到大): zrangebyscore salary -inf +inf
显示全部用户(按照工资从大到小):zrevrange salary 0 -1
上面两条命令后面加上withscores:可以实现用户并附带成绩
移除元素:zrem salary zs
获取集合元素个数:zcard salay
获取指定区间的成员数量:zcount salary 5000 6500 --->2
zset使用场景:set排序,存储班级成绩表,排行榜等

三种特殊数据类型

geospatial(地理位置)

//只有6个命令
1.geoadd:添加地理位置(两极无法添加,一般使用经纬度添加地理位置)
//有效的经度:[-180,180],有效的纬度: [-85.*,85.*]
geoadd china:city 116.40 39.90 beijing 106.55 29.57 chongqing
参数:key 值(经度,纬度,名称)

2.geopos:获取当前定位
geopos china:city beijing chongqing

3.geodist:查看某地到某地的直线距离
geodist china:city beijing chongqing km

4.georadius:(找附近的人)以给定的经纬度为中心。找出某一半径的元素
georadius china:city 110 30 1000 km(withdist 直线距离,withcoord 经纬度,count 1数量限制)

5.georadiusbymember:(找地理位置)找出位于指定元素周围的其他元素
georadiusbymember china:city beijing 1000km

6.geohash:返回一个或多个位置的geohash
该命令将返回11个字符串的geohash,两个字符窜越接近,则距离越近

//geospatial的数据类型就是zset有序集合
geospational应用场景:朋友地位,附近的人,打车距离计算

Hyperloglog(基数统计)

什么是基数
a{1,3,5,7,9,7}
b{1,3,5,7,9}
基数(不重复的元素) = 5
命令以p开头
1.pfadd mykey a b c d e f g h i j 创建一组元素
2.pfcount mykey 统计基数数量
3.pfmerge mykey1 mykey2 mykey 合并2组元素到另一组
使用场景:网页的浏览量

Bitmap(位运算存储)

只要有两个状态对的都可以使用bitmap
eg;
模拟一周上班打卡:(1,0)
setbit sign 0  1
setbit sign 1  0
setbit sign 2  1
setbit sign 3  0
setbit sign 4  1
setbit sign 5  1
setbit sign 6  1

getbit sign 6 判断具体某一天是否打卡
bitcount sign 统计打卡记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值