redis基础常识、数据类型及基本命令

一、nosql的四大种类

1、四大种类

在这里插入图片描述

二、什么是redis?

1、redis概述

Remote dictory Server(远程字典服务),是一个用c语言编写、支持网络、基于内存可持久化的日志型、key-value数据库,提供多种语言的api。

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串
(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间
(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)
 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

这是官方的原话翻译,所以可看出redis可用于数据库、缓存和消息中间件以及其数据结构

三、redis性能测试

在Linux或Window安装redis之后,安装内容有一个redis-benchmark,这是redis自带的性能测试工具,执行命令为redis-beachmark [option] [option value]
下面是菜鸟教程罗列的参数
在这里插入图片描述
在这里插入图片描述

四、redis的基础知识

1、redis有十六个数据库

在安装的redis配置文件中可以看到,默认的使用的数据库为0,可以指定数据库,从0到‘databases’-1,而databases为16
在这里插入图片描述
在这里插入图片描述

2、redis是单线程的

redis是基于内存进行操作的,所以是根据机器的内存和带宽来决定其性能,而不是根据CPU,而如果redis是多线程,那么就需要cpu来调度,cpu在多线程的上下文切换会耗时,所以能使用单线程就使用单线程,这是最佳方案。

五、redis的基本命令

1、keys * :显示所有key
2、set [key] [key值] :添加数据
3、get [key] :获取key的值
4、exists [key]:判断key是否存在
5、type [key]:显示key的数据类型
6、move [key] [16个数据库中任意一个]:将key移动到某个数据库
7、select [16个数据库中任意一个]:切换数据库
8、flushdb:清除当前数据库内容
9、flushall:清除所有数据库内容
10、dbsize:查看当前数据库大小
11、expire [key] [数字/秒] :设置key的失效时间
12、ttl [key] :显示生存时间

六、redis的五大数据类型

1、String(字符串)类型

上面基本命令的添加数据和获取key值添加的就是String类型的值
在这里插入图片描述
(1)append [key]:追加在最后面,如果追加的key不存在,则相当于创建一个新的key
(2)incr [key]:加1
(3)decr [key]:减一
(4)incrby [key] [数值]:添加数值,可指定增量
(5)decrby [key] [数值]:减少数值,可指定增量
在这里插入图片描述
(6)getrange [key] 起始下标 结束下标:获取指定范围的字符串,第一个的下标值为0,且为闭区间
(7)getrange [key] 0 -1:查看全部字符串
(8)setrange [key] [下标] [替换的字符串]:替换指定位置的字符串,替换超过原本字符串长度,则追加在后面
在这里插入图片描述
(9)setex [key] [生存时间] [key value]:添加数据并设置生存时间
(10)setnx [key] [key value] :添加key,不存在时添加
(11)mset [key] [value] [key] [value]:一次设置多个key
(12)msetnx [key] [value] [key] [value] : 如果不存在则添加,是原子性的,也就是要么一起成功,要么一起失败
在这里插入图片描述
(13)set user {name:chen,age:12}:设置对象,值设置为json格式
(14)getset [key] [value]:值不存在时返回空,并将value设置,若存在则返回原来的值,再覆盖调原来的值
在这里插入图片描述

2、list类型

(1)LPUSH [key] [value]:添加数据,往左边插入数据
(2)LPUSH [key] 0 -1:获取所有数据
(3)LPUSH [key] [start] [stop]:获取所有数据获取指定下标的数据
在这里插入图片描述
(4)RPUSH [key] [value]:添加数据,往右边插入数据
(5)LPOP [key]:左边移除数据,移除最左边的数据
(6)RPOP [key]:右边移除数据,移除最右边的数据
在这里插入图片描述
(7)LRAM [key] [count] [value]:移除指定元素
(8)LTIME [key] [count] [value]:截取指定位置元素
(9)RPOPLPUSH [source] [destination]:移除数组最后一位元素至另外一个数组
在这里插入图片描述
(10) LSET [key] [index ] [value]:根据下标插入数据
(11)LINSERT [key] before|after pivot value :根据元素前插入数据
在这里插入图片描述

3、Set(集合)

在list中的值是可以重复的,但是在Set中是不可以的。
(1)sadd [key] [value] :添加元素
(2)smembers [key]:显示集合所有元素
(3)scard [key]:显示元素个数
(4)srem [key] [value]:移除指定元素
(5)srandmember [key] [value]: 随机取集合中的元素,可指定个数
(6)spop [key]:随机移除元素
在这里插入图片描述
(7)smove [key1] [key2] [value]:将value从key1移动至key2
(8)sdiff [key1] [key2]:差集
(9)sinter [key1] [key2]:交集
(10)sunion [key1] [key2]:并集
在这里插入图片描述

3、Hash(哈希)

相当于key:(key:value),所以用法其实与string差不多
(1)hset [key] [field] [value]:添加数据,所以一个key中有多个值,也就是可以有多对键值对
(2)hget [key] [field]:获取数据
(3)hmset [key] [field] [value] [field] [value]:可添加多条数据
(4)hmget [key] [field] [field]:获取多条数据
(5)hgetall [key]:获取key中全部数据,包含所有键值对信息
(6)hdel [key] [field] [field]:删除数据,可删除一个也可删除多个
(7)hexists [key] [field]:判断key是否存在
在这里插入图片描述
(8)hincrby [key] [field] [incrment] :加incrment
(9)hsetnx [key] [field] [value]:如果已经存在则不添加,不存在则添加
在这里插入图片描述

4、Zset(有序集合)

使用与set基本一致,只是在set的基础上加上排序
(1)zadd [key] [score] [member]:添加数据,与set基本一致
(2)zrange [key] start stop:获取数据,必须设置起始和终止点,从小到大排序
(3)zrevrange [key] start stop:从大到小排序
(3)zrangebyscore [key] min max:排序,设置最小值及最大值,输出内容会在这个范围从小到大排序
(4)zrangebyscore [key] min max withscore:同样是排序,但是加上了数据大小显示
在这里插入图片描述
(5)zrem [key] member :移除某个元素
(6)zcount [key] min max :获取指定区间的成员数量

七、三种特殊类型

1、geospaial(地理位置)

也就是这个数据类型使用来存储地理位置的,存的是经度纬度,有效范围官方给出如下:
在这里插入图片描述
但是为什么存的是经纬度却没有将其并入基本数据类型呢?因为其实geospaial的数据类型是 Zset 类型
关于geo命令也是只有六条点击跳转官网查看
(1)geoadd [key] 经度 纬度 member:添加数据
(2)geopos [key] member:查看指定数据的经纬度
(3)geodist [key] member1 member2:返回两个地点的距离
(4)geohash [key] member:返回地理数据的geohash字符串,11位
(5)georadius [key] 经度 纬度 范围 单位: geo返回指定经纬度的附近数据(附近范围可指定)
在这里插入图片描述
(6)georediusbymember [key] member 距离 单位:找出指定member范围的数据
在这里插入图片描述

2、Hyperloglog基数统计

用作于基数统计,有错误率,所以只适用于允许容错的,底层实际是string
(1)pfadd [key] element1 element2...:添加数据
(2)pfcount [key] :查看key数据数量
(3)pfmerge [存放合并后的key] [合并的key] [合并的key]:合并key
pfadd

3、Bitmaps(位存储)

存储0和1,可用来代表true、false等,数据类型是string
(1)setbit [key] offset value:添加数据
(2)getbit [key] offset:获取数据
(3)bitcount [key]:为1的数量
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值