Redis基本数据类型及使用(1)

目录

字符串

列表

散列表(哈希)


什么是redis这里就不多做介绍了,要清楚他是一个基于内存的数据库

这里介绍linux下redis的环境安装和配置,我的系统是ubuntu

我们先更新一下软件

sudo apt update

下面安装redis服务器

sudo apt-get install redis-server

通过上面命令安装完毕后会自动启动redis,可以通过ps去验证

ps -ef | grep redis

可以发现redis默认工作在6379端口上,这些都能在redis.conf配置文件里面改

 或者你手动启动redis

sudo service redis-server start

登录redis的客户端去验证一下,安好没

redis-cli

输入ping命令,他会返回给你一个pong,说明安装成功

下面看看redis的一些基本操作

redis常用的数据类型有字符串,列表,哈希表,集合,有序集合这五种,当然新版本多了很多比如bitmap、HyperLogLog、Stream这些。redis里面存储数据都是以kv形式存的

redis启动默认有16个数据库0-15编号(搞不懂大佬们怎么都喜欢16这个数字,stl分配器的自由链表也是16个,0-15编号)  。我们启动默认访问的就是0号数据库

我们可以选择想使用的数据库

select index

 还有一些常见的命令操作

dbsize获取当前数据库键值对数量
flushdb清空当前数据库
flushall清空所有数据库
save将数据保存至磁盘
bgsave将数据异步保存至磁盘(后台)(默认每2秒自动执行一次)
lastsave获取最后一次保存的unix时间

做个简单的演示,mset能一次保存多个kv对

除了上面的,还有一些通用的数据操作

注意*号的操作范围是当前数据库

keys 格式查看符合指定格式key, *为通配符
exists key1 [key2...]查看是否存在一至多个指定的key,返回的是存在key的个数
type key按key查看value的数据类型
del key1[key2...]按key删除一至多个键值对

rename key1 key2

重命名key1 ,如果key2已经存在,其值会被覆盖
renamenx key1 key2key2不存在时重命名key1
move key 数据库编号 按key将一个键值对移动到指定数据库
copy key1 key2将key1的值拷贝给key2

下面我挑几个做个简单的示例

我们记录了三组kv对

 查看一下key值

 看看都存在几个key  ,,例子中kk这个是不存在的

 将k1重命名为kk3,但是kk3已经存在了,重命名之后老的kk3的值就会被覆盖

 把10号数据库的kk3移动到5号数据库,那么10的数据就会-1,5号数据库数据+1。。。但是如果5号本来就有kk3这key值,那么移动会失败

字符串:

字符串的存储就像上面演示这种kv形式

keyvalue

下面看看字符串类型的一些指令

set key value添加或修改一个键值对
get key

按key获取value

mset key1 value1 [key2 value2..]添加或修改一至多个键值对
mget key1 [key2..]按key获取一至多个value
append key value在原有value后面追加内容
strlen key查看字符串长度
getrange key startindex endindex

获取范围内[startindex,endindex]的子串

index从0开始,,-n表示倒数第n个字符

set key vaule nx

setnx key value

仅在key不存在时候,添加一个键值对
set key value xx仅在key已存在,修改一个键值对

set key value get 

getset key value

修改一个键值对并返回原值,原值不存在则返回nil
msetnx key1 value1 [key1 value2..]批量版setnx

 如果kv对的value存储的内容是整数,则由如下操作命令

incr keykey不存在,创建一个key vaule等于1的键值对;key存在,使value增长1
incrby key 数值按key使value增长具体数值
incrbyfloat key 小数值按key使小数value增长具体小数值
decr key按key使value减1
decrby key 数值按key使value减小具体数值

还可以生成临时的键值对

生存时间time to live,缩写ttl,指键值对距离被删除的剩余秒数

如果重新set,生存时间将被重置

这些操作可以支持各种数据类型

expire  key  秒数设定一个生存时间
ttl  key

查看生存时间剩余秒数

key不存在返回-2,永久键值对返回-1

pexpire  key  毫秒数毫秒版expire
pttl  key毫秒版 ttl
persist  key持久化(取消生存时间)

这些操作指支持字符串类型

set kry value ex 秒数

setex key 秒数 vlaue

set+expire

set key value px 毫秒数

psetex key 毫秒数 value

set+pexpire
set key vaue exat unix秒设置一个unix秒的过期时间
set key value pxat unix 毫秒设置一个unix毫秒的过期时间

set key value keepttl

set时不重置ttl

列表

存储形式长这样,key有序

key1   value0value1..
key2value0value1...
....

列表相关操作:

rpush key value0 [value1..](key不存在自动创建key)在列表右侧插入一个或多个值
lpush key value0 [value1..](key不存在自动创建key)在列表左侧插入一个或多个值
rpop key  [数量]

从列表右侧弹出(指定数量)的值

全部弹出后key也会被自动删除

lpop key  [数量]

从列表左侧弹出(指定数量)的值

全部弹出后key也会被自动删除

rpushx key value0[value1..]仅当key存在时,在列表右侧插入一个或多个值
lpushx key value0[value1..]仅当key存在时,在列表左侧插入一个或多个值
lset key  index value修改指定位置的值
linsert key  before /after  定位value  value在定位value 前/后插入一个值
lindex key  index按索引查看值
lrange key  startindex   endindex查看指定范围的值
llen  key查看队列长度
lrem  key  数量 value

删除指定值

数量为正,表示从前面开始删,为负则相反

ltrim  key  startindex  endindex将列表修剪到给定范围

注意:索引都是从0开始,,-n表示倒数第n个 

列表里常用的操作rpush,lpush就相当于尾插和头插这样子,对于rpop,lpop也是如此,弹出操作后面只写key 不写弹出几个就回车默认就弹出一个value

 

散列表(哈希)

存储方式如下:键--字段--值,,不同键里面的字段可以重复,,也就是说k1里的字段可以有1 2 3,k2里也可以有1 2 3,,同样的按键排序了

key1field1value1
field2value2
.....
key2field1value1
field2value2
.....

基本的操作命令:

hset key field1 value1 【field2 value2 ..】添加或修改一个键与一至多个字段和值
hget key field按key和field获取一对value
hmget key field1 【filed2..】按key和field获取一至多对value
hgetall key按key获取全部的field和value
hdel key field1【field2..】删除一至多对field-value
hsetnx key  field value仅在field不存在时添加一对field --value
hkeys  key查看一个散列表中所有field
hvals key查看一个散列表中所有value
hlen key统计一个散列表中有多少对field-value
hexists  key  field查看一个field是否存在

 同字符串类型,哈希表对于value内容是数值的也有操作

hincrby  key  field 整数值按key和field使value增长 整数值
hincrbyfloat key field  小数值按key和field使value增长 小数值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan小小锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值