一、安装
- 通过wget下载或者https://redis.io/download官网下载压缩包
wget https://download.redis.io/releases/redis-6.0.8.tar.gz tar xzf redis-6.0.8.tar.gz cd redis-6.0.8 make ? ?//编译c make PREFIX=/usr/local/redis install ? ?//安装 - 配置:
//将redis-xxx下的redis.conf复制到安装好的redis目录下 cp redis.conf /usr/local/redis 如果没有配置文件redis也可以启动,不过将启用默认配置,不方便修改端口号等信息 客户端连接:redis-cli -h ip地址 -p 端口 退出连接:ctrl+c 服务端关闭:redis-cli shutdown ? ?(正常关闭) kill -9 pid ? ? ? ? ? ? ? ? ? (异常关闭) - 前端启动(了解)
在redis目录下,执行./bin/redis-server 缺点:无法部署集群 - 后端启动:./bin/redis-server ./redis.conf
二、String命令
字符串类型是Redis中最为基础、常用的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同,在Redis中字符串类型的Value最多可以容纳的数据长度为512M。
二进制安全和数据安全是没有关系的。 Mysql-关系型数据库,二进制数据不安全 ![image.png](https://img-blog.csdnimg.cn/img_convert/609e8ba4597b5d73dd303e4076c51bbd.png#align=left&display=inline&height=259&margin=[object Object]&name=image.png&originHeight=518&originWidth=1225&size=135811&status=done&style=shadow&width=612.5) Redis-非关系型数据库,二进制数据安全的 [外链图片转存失败,源站可能有防盗image!链机制,建png]接上传mhttps://g-sSblog.dnimg.cn/img_convert/c9572a6b35928ca8d284848fbcf1e0eb.png#align=left&display=inline&height=260&margin=[object Object]&name=image.png&originHeight=520&originWidth=1279&size=121344&status=done&style=none&width=639.5)https://www.yuque.com/lingzhi-l5d3i/bk6gy4/gq0r5a)] 赋值: set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回“OK”。 取值: get key:获取key的value,如果与该key关联的value不是String类型,redis将会返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)。 删除: del key:删除指定key,返回是数字类型,表示删了几条数据。 扩展: getset key value:先获取该key的值,然后在设置该key的值。 incr key:将指定的key的value原子性的递增1,如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转换为整型,如hello,该操作将执行失败并返回相应的错误信信息。相当于++i。 incrby key increment:增加increment decr key:将指定的key的value原子性的递减1,如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转换为整型,如hello,该操作将执行失败并返回相应的错误信信息。相当于–i。 decrby key decrement:减少increment append key value:拼凑字符串,如果该key存在,则在原有的value后追加该值;如果key不存在,则重新建一个key/value。
String 使用环境:主要用于保存json格式的字符串
三、hash命令
Redis中的Hash类型可以看成具有String key 和String Value的map容器,所以非常适合用于存储值对象的信息,每一个hash可以存储4294967295个键值对。 Hash 特点:占用的磁盘空间极少 赋值: hset key field value:为指定的key设置field/value对 hmset key field value[field value2…]:设置key中的多个field/value 取值: hget key field:返回指定的key中的field的值 hget key field1 field2…:获取key中多个field的值 hgetall key:获取key中的所有field-value 删除: hdel key field:删除指定的key的field值(如何hash中没有field了,hash将会自动删除) del key:删除整个hash 操作: hincrby key field increment:增加increment hexists key field:返回指定key的field是否存在,存在为1,不存在为0 hlen key:获取key所包含的field的数量 hkeys key:获取所有字段 hvals key:获取所有value值
四、LinkedList
为什么redis选取了链表? Redis操作中,最多的操作是进行元素的增删 使用环境:
通用命令
- keys
- keys * / ? / [pattern] ? ??:遍历所有key
- 一般不用于生产环境,O(n)
- dbsize? ??? ?:计算key的总数
- exists key? ??:检查key是否存在,存在为1,不存在为0
- del key [key…]? ??:删除指定key-value,成功1,失败0
- expire key seconds? ??:key在seconds秒后过期
- ttl key? ??:查看key剩余的过期时间
- persist key? ??:去掉key的过期时间(-2代表key已经不存在了,-1代表存在,但没有过期时间)
- type key? ??:返回key的数据类型
数据结构和内部编码 ![image.png](https://img-blog.csdnimg.cn/img_convert/21165c53b5b920c40dc29dc53181a861.png#align=left&display=inline&height=318&margin=[object Object]&name=image.png&originHeight=636&originWidth=630&size=193973&status=done&style=none&width=315) 单线程架构:
|