redis安装,redis常用操作,基本数据类型操作

1 篇文章 0 订阅
1 篇文章 0 订阅
Redis是一个开源的Key-Value数据库,支持内存存储和持久化,提供了RDB和AOF两种持久化方式。它常用于高速缓存、计数器、地图信息分析等场景,还具备发布订阅系统、丰富的数据类型和集群功能。
摘要由CSDN通过智能技术生成

redis介绍

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可
基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的
开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis 大事件
2009 揭秘创始人创建Redis背后的故事 https://www.sohu.com/a/403189647_590700
2020.6 Redis 创始人宣布退居二线:我写代码只是为了表达自己!
https://zhuanlan.zhihu.com/p/155645360
redis能做什么?

  1. 内存存储,持久化,断电即丢失,所以持久化很重要,redis采用两种机制(RDB和AOF)
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计数器等,网站浏览量
    redis特点/特性
  6. 多样的数据类型
  7. 持久化
  8. 集群
  9. 事务等…

安装

升级版本gcc因为redis7.* 需要gcc高版本的支持

可以通过gcc -v 检查版本

yum -y install centos-release-scl 

yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 

#修改使用版本 scl enable devtoolset-9 bash echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
redis安装
1.gcc -v
2.echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
3.gcc -v
4.cd /opt
5.将安装包放至/opt
6.tar -zxvf 安装包名
7.cd redis-7.0.5
8.make
9.make install
10.cd redis-7.0.5
11. ./redis-server

基本操作

启动服务   redis-server redis6379.conf

停止服务   redis-cli shutdown

退出客户端	exit

连接redis   
		redis-cli  
		redis-cli --raw	(转化中文格式)
		redis-cli -h 127.0.0.1 -p 6379
		redis-cli -h 127.0.0.1 -p 6379 --raw

String

查询所有Key(测试使用) 
		keys *

添加key	
		set  key value
		setex key 超时时间 value 添加key并设置超时时间
		setnx key value 如果不存在 默认会创建一个新的值,存在不操作
		mset key value [key value ...] 批量存储

对象添加
		set 对象名 {属性1:;属性2:;属性3:}
		(注意:字符串需要去掉引号)

保存数据 		
		bgsave

查看key	
		get key
		mget key1 key2 ... 批量查看
            *占多个匹配  keys m*
            ? 占一个匹配 keys n?me
            [az] 当前必须符合a或者z   n[az]me
            [^a] 不匹配什么
            [a-c] 匹配范围

删除单个key	
		del key
 
删除所有Key  
		flushdb  删除当前库
		flushall 删除所有库

切换数据库	
		select 0~15

浮点数增删	
		incrbyfloat 5/-0.5 

设置key超时时间
expire key  超时时间()
ttl		查看key过期时间

追加字符串	append key value

获取key指定范围值	getrange  key  index1(开始下表) index2(结束下标 -1表示最大长度)

替换key指定位置值	setrange key 开始下标 替换内容

List列表类型

list
	添加list列表
		lpush listname zhangsan lisi
	
	list列表取值
		lrange listname 0 -1 #取值
	
	list追加数据
		lpush listname wangwu #追加值
		
	list结尾插入值
		rpush listname zhaoliu # 结尾插入值

	list获取当前列表长度
		llen listname # 获取当前列表长度
		
	删除list
		del key #这种是直接将整个列表都删除 del删除删除任意类型
		
	删除list列表中的某一些数据
		# 没给count值,默认左弹出(删除)第一个值 返回的信息是弹出(删除)的值
        lpop listname
        
        # count 提供值,可以弹出多个,返回值就是弹出的值得列表
        lpop listname 10
        
    删除指定值 
        lrem key count value ---- 默认从左侧开始查询并删除
        (删除几个什么值):lrem listname 2 zhangsan---删除两个zhangsan
        
    通过索引获取数据
        lindex listname 1(下标)
        
    截取范围的数据(下标)
    	ltrim listname 1 4
    	
   	替换列表中的值(下标)
   		lset listname 1 zhaoliu
   		
   	在指定的一个位置前面插入值(不是索引)
   	 	linsert stu before zhaoliu lisi
   	 	
	在指定的一个位置后面插入值(不是索引)
		linsert stu after lisi wangwu

set

特点: 无序、不能重复 所有命令 s 开头

用途:点赞,签到,like等功能、抽奖功能

重复的值无法添加成功,并且值得顺序也不是固定的

添加值
	sadd key v........
	
查询值
	smembers key
	
删除指定指定的元素 
	srem key value
	
判断当前集合中是否存在指定的值 
	 sismember key v    是返回1  否返回0
	 
查看当前集合中值个数
	sacrd key  返回个数

随机获取
	srandmember key count(要返回的个数)
	
随机删除
	 spop key count
	 
差集 diff 差异 只返回第一个集合的差值
	
	例:
		127.0.0.1:6379> sadd zb1 xiaozhi dasima caixukun lijiaqi
        4
        127.0.0.1:6379> sadd zb2 liziqi xiaozhi dasima wangdaxian xuxubaobao
        5
        127.0.0.1:6379> sdiff zb1 zb2
        caixukun
        lijiaqi
        
交集 sinter 交集

		127.0.0.1:6379> sinter zb2 zb1
        dasima
        xiaozhi

Hash类型(map结构)

key-value(map) 比较适合对象类型的数据存储 key -(key-value)

存值 (key (key - value))
语法:
	hset key k1 v1 k2 v2 k3 v3
	
获取单个值
	hget key k

存储对象
	hset student name zhangsan age 19 hobbies chouyanhejiutangtou

存储对象集合
	hset student 1 {id:1,name:zhangsan} 2 {id:2,name:lisi}
	获取 hget student 2

获取多个key
	hmget student 1 2

获取全部的值 hgetall 名称k
	hgetall student
	
通过值的key删除指定的数据
	hdel student 2

读取当前hash表(map集合)中数据的个数
	hlen student
	
判断是否存在
	hexists student 10  (存在返回1.无则返回0)

读取所有的key ----- 1w条数据 取某一些特定的数据,取到所有key 循环 取值 判断 筛选。
	hkeys student
	
取所有的value --- 案例:Java中想将redis中的hash结构转化为set结构
	hvals student

Zset

有序不重复集合,在set的基础上多增加一个值 set k1 * v1 (zset k1 排序的值(score) v1)
有序不可重复的set集合
主要使用方向:工资、班级成绩等等之类的数据。 或者 权重处理 0 普通 1 重要

增加数据
	zadd  key   权重值	       value
			   (:8000)    (:{id:1,name:zhangsan,sal:8000})

查询数据
	zrange key 0 -1 (默认升序)
	
随机读取
	zrandmember key 1(随机获取的个数) 
	
删除数据
	zrem key value

###复杂查询###

显示所有信息,从小到大 (范围) -inf 负无穷 +inf正无穷
	语法:zrange by score key min max --- min max使用的是排序字段的值

升序操作

    默认取所有数据
        zrange key 0 -1 取索引的范围

    根据当前排序结果取所有数据
        zrangebyscore key -inf +inf

    根据当前排序结果取所有数据 并显示排序字段
         zrangebyscore key -inf +inf withscores

    根据当前排序结果取所有数据 并显示排序字段 并截取某一部分值
        zrangebyscore key -inf +inf withscores limit 0 1

    取排序字段值大于**的数据
        zrangebyscore key **(:8000) +inf

    取排序字段值小于**的数据
        zrangebyscore key -inf **(:8000)

降序操作
	默认取所有数据
		zrevrange key 0 -1 取索引的范围
		
	##其余同升序操作,zrange更换为zrevrange##

geospatial 地理位置

作用:朋友圈定位,附近的人,打车距离计算。

添加地理位置信息 GEOADD
	geoadd key 经度 纬度 地址名称

查询指定位置的经纬度 GEOPOS
	geopos maps 地址名称

查询两地点之间的距离 GEODIST 
	geodist key 地点1 地点2 单位(默认 米): geodist maps xuejiaao hongyun M

查询附近的城市(定位) GEORADIUS
	georadius key 经度 纬度 范围(:1500) 距离单位 (:范围与单位之间需要用空格隔开):georadius maps 116.22518499110029 39.951383565611934 1500 KM

查询附近的城市(定位)--显示到中间的距离 GEORADIUS
	georadius key 经度 纬度 范围 距离单位 withdist

查询附近的城市(定位)--显示他人精准信息 GEORADIUS
	georadius maps 经度 纬度 范围 距离单位 withdist withcoord

查询附近的城市(定位)--显示他人精准信息 并指定返回个数 GEORADIUS
	georadius maps 经度 纬度 范围 距离单位 withdist withcoord count 返回个数

 通过元素(非坐标)定位信息(即通过名称)
 	 georadiusbymember key 名称 范围 距离单位

Bitmaps位图

案例:是否打卡(一周) 0 未打卡 1 打卡

增加数据
	setbit key1 key2 value
	
	例:
    setbit  kq     1          1
			考勤	周几   是否打卡 1:0:否
		        
	查看某一天的打卡记录 getbit
		get kq
		
	统计打卡的天数 bitcount
		bitcount kq
	
	扩展
		 setbit kq:geng:2023:3 6  1
		        考勤:谁的::月  日 是否打卡
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值