redis初步认识(一)

概述

redis 是一个远程字典服务;当然,redis是内存数据库,kv数据库,最基础的数据结构有(string, list, hash, set, zset)几种。

安装编译

在ubuntu云服务器上安装,有以下步骤:
git clone https://gitee.com/mirrors/redis.git -b 6.2
cd redis/
make
make test
sudo make install

string数据结构

字符数组,redis字符串是二进制安全字符串,可以存储图片等二进制数据;
内部实际存储根据string的数据特征可以采用int, embstr, raw存储。

基础命令

set key val
get key
执行原子加一的操作
incr key
incrby key increment
decr key
decrby key decrement

setnx key value
del key

应用

应用方面比较多,主要用于对象存储,累加器等。

对象存储

set role:100001  '{["name"]: "a", ["sex"]:"male", ["age"]:20}'
get role:100001
#这个格式比较固定,几乎都是如此存储的

累加器

#统计数量  累计加1
incr times
# 累计加到1000
incrby times 1000

list结构

对于list来说,它是一个首尾相连接的双向链表,链表首尾操作时间复杂度O(1);查找中间元素时间复杂度O(n);
列表中数据可能会被压缩:

  1. 元素长度小于48,不压缩;
  2. 元素压缩前后长度不超过8,不压缩;

基础命令

#左侧插入 左侧获取key
LPUSH key value
LPOP key

#右侧插入 右侧获取key
RPUSH key value
RPOP key

LRANGE key start end
LREM key count value

应用

栈(先进后出FILO)

LPUSH + LPOP
# 或者
RPUSH + RPOP

队列

LPUSH + RPOP
#或者
RPUSH + LPOP

HASH

字典结构,通过hash函数(而不是通过比较key的方式)来确定节点的位置,hash这个数据结构不多介绍,可以参考我之前的文章。

基础命令

HGET key field
HSET key field value

HMSET key field1 value1 field2 value2
HMGET key field1 field2

HINCRBY key field increment
HLEN key

HDEL key field

存储结构

当节点数量少的时候并且字符串长度小的时候,内部采用压缩列表存储,否则采用字典实现;

应用

存储对象

 hmset hash:10001 name a age 18 sex male
 # 与 string 比较
set hash:10001 '{["name"]:"a",["sex"]:"male",["age"]:18,
 ["money"]:1000000}'
 # 假设现在修改 a的年龄为29岁
# hash:
    hset hash:10001 age 29
 # string: 
    get role:10001
    # 将得到的字符串调用json.decode解密,取出字段,修改 age 值
    # 再调用json加密
    set role:10001 '{["name"]:"a",["sex"]:"male",["age"]:29}

小结

当然了,redis是一个内存数据库,存储在内存当中;如果遇到服务器宕机,这些数据就不存在了,所以有些数据需要配合mysql数据库一起使用。这篇写的是redis的基础部分,数据结构也写了几个,感觉还好,可以一起来学习学习。OK,翻篇。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值