Redis安装
1.将 Redis安装包 放在Linux 目录opt下 解压 文件 tar -vxf redis-6.5.25.tar
2.安装C++: yum install gcc-c++ 安装环境(下载): 先make 之后在 make install
3.redis默认安装路径 “/usr/local/bin”
4.将redis配置文件 redis.conf 拷贝一份 拷贝到当前目录下Lconfig(新建) 修改配置文件中 daemonize no —> daemonize yes
5.启动redis服务 —> 当前目录 redis-server lconfig/redis.conf
6.用客户端连接redis —> redis-cli -p 6379 (redis默认端口号)
<img src="C:\Users\liaoy\AppData\Local\Temp\Image.png" alt="Image" style="zoom:67%;" />
7.查看redis进程: —>ps ef|grep redis
8.关闭redis服务器: —>shutdown 退出redis-cli是exit
9.redis-benchmark 测试性能工具: redis-benchmark -h localhost -p 6379 -c 100 -n 100000
五大数据类型
redis-server 开启Redis服务
redis -cli -p 6379 测试client是否可以连上
ping 测试是否连接成功
1.redis有16个数据库,使用命令< select 1 > 切换数据库
2.keys * 查询全部key
3.清空当前的数据库的内容:flushdb
4.清空全部数据库的内容:flushall
*append 给某个key追加内容 append key “hello" 如果存在key则追加到原文后面,不存在则创建key并将”hello“作为内容填充进去
1).string类型
5.判断当前key是否存在:exists key
6.移除指定数据库内的key:move key 1
7.设置key的过期时间,单位是秒:expire 查看当前key的剩余时间 :ttl key
8.查看当前key的类型:type key
9.set key 0 设置key
incr key #自增1
decr key # 自减1
incrby key 10 #加指定数量
decrby key 10 #减指定数量
10.截取字符串指定地址:getrange key 0 3(-1,全部) 替换指定位置开始的字符串:setrange key 1 xx
11.设置key带有过期时间:setex(set with expire) setex key 30 “HELLO”
12.不存在再设置:setnx(set if not exist) setnx key “redis” —> 1 setnx key “MongoDB” —> 0
13.批量set与get mset k1 v1 k2 v2 k3 v3 mget k1 k2 k3 msetnx k1 v1 k2 v4 #原子性,要么全部成功,不然全部失败
14.存在值则获取原来的值,并设置新的值 getset key “redis”,不存在则返回nil
#高阶
set user:1 {name:zhangsan,age:2} #设置一个user:1对象,值为json字符来保存一个对象
#这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK的!
2).List类型
1.所有指令都是以L 开头 LPUSH list one #将一个值或者多个值,插入到列表头部(左)
RPUSH list one #将一个值或者多个值,插入到列表头部(右) LRANGE list 0 1 通过区间获取具体的值
LRANGE list 0 -1 获取list全部的值
2,移除 LPOP list 移除列表的第一个元素 RPOP list 移除最后一个元素
3.通过获取list某一个值 : Lindex list 1
4.获取列表的长度: Llen list
5.移除列表指定个数的值:lrem list 1 one
6.通过下标截取指定的长度:Ltrim list 1 2 (list会被改变)
7.移除列表最后一个元素到新的列表中:rpoplpush list1 1 list2
8.将指定下标的值更新成为另外的值,更新操作(如果不存在则会报错): lset list 0 item
9.将某一个具体的值插入到列表中插入到指定值得前面或后面:linsert list before “value1” “value2”
3).Set类型
1.set类型中元素是不可以重复的
sadd set1 1 2 3 4 #添加 smembers set1 #查询内容
sismember set1 1 #查询是否存在(1:存在,0不存在)
scard set1 #获取set集合中个数 srem set1 1 #移除指定元素
srandmember set1 1 #随机获取一个元素
spop set1 #随机移除一个元素 smove set1 set2 “值” #移动指定的值到新的集合中
2.sdiff set1 set2 #差集 sinter set1 set 2 #交集 sunion set1 set2 #并集
4).Hash类型
1.hset #set一个具体的kys-value hget #获取一个字段值
hmset #set多个具体的kys-value hmget #获取多个字段值
hgetall #获取全部的数据
hgetall hdel myhash key1#删除hash指定的key
hlen myhash #获取hash长度 hexists myhash field1 #判断是否存在 hvals myhash #获取指定hash所有的值
5).zset类型
语法更string差不多,前面加个z
zcount #获取指定区间的成员数量
zadd #添加一个值 也可以添加多个值 zrange #查看集合中的全部元素
zrangebyscore salary -inf +inf #可以显示全部的用户 从小到大
zrangebyscore salary -inf +inf withscore #显示全部的用户并且带成绩
zrangebyscore salary -inf 5000 withscore #显示工资小于2500的升序排列
zrem salary xiaohong #移除有序集合中的指定元素
三种特殊数据类型
1>Geospatial地理位置
geoadd #添加地理位置
#规则:两级无法直接添加,我们一般会下载城市数据 ,直接通过java程序一次性导入
获得当前定位:一定是一个坐标值!
geopos china:city beijing #获取指定的城市的经度和纬度
geodist china:city beijing shanghai km #查看上海到北京的直线距离
georadius china:city 110 30 1000km #以110,30这个经纬度为中心,寻找方圆1000Km以内的城市
georadius china:city 110 30 500 km withdist #显示到中间距离的位置
georadius china:city 110 30 500 km withcoord #显示他人的定位信息
georadius china:city 110 30 500 km withdist withcoord count 1 #筛选出指定的结果!
2>Hyperloglog 奇数(不重复的元素)
pfadd #创建一组元素 pfcount #统计mykey元素的奇数数量
pfmerge #合并两组
3>Bitmaps
通过setbit #可以记录每天是否打卡(0:"未打卡",1:"已打卡")
getbit #可以获得某一天是否打卡
bitcount #统计这周的打卡记录