Redis学习笔记(一)

Redis学习笔记(一)

工作百无聊赖,准备把自己想学的东西挨个学一遍,最近突然发现如果你学了一个东西,但是毫无记录只是看了一些书的话,这样过去后很快就忘记了。所以我觉得很必要采用一种方式把看到的东西记下来,这样可以加深记忆,也可以在以后回顾的时候一眼看到一项技术中的重点,方便回顾和查找。

最近首先想学一下Redis,因为项目中可能会用到。


一. 概述

Redis是一款开源的key-value数据库,使用C语音编写。它支持网络,可基于内存,也可持久化到磁盘的数据库。它和Memcached类似。Redis读取速度非常快,在一款普通的笔记本上每秒可以读取超过十万个键值。Redis同样是一个多面手,虽然是一款数据库,但是目前越来越多的人把它当做缓存、队列系统等来使用。还支持为每个键值设置生存时间(Time to Live, TTL),生存时间到期后会自动被删除。这一特点使得它成为作为缓存一个非常好的优势。

作为一款key-value数据库,它支持存储的类型有以下几种:

  • String 字符串
  • List 链表
  • Set集合
  • ZSet有序集合
  • Hash哈希

二. Redis和Mencached比较

Redis和Memcached都可以用来充当缓存。Redis是单线程的,Memcached支持多线程,所以在多核服务器上Memcached性能会高一些。但Redis性能在绝大部分条件下都不会成为瓶颈。所以在选择Redis或者Memcached应该更关注功能,如果需要用到高级的数据类型或者持久化功能,那么Redis会比Memcached更合适一些。

在应用场景方面,如果只是单纯的使用key-value,则Memcached性能会高一些,如果想要使用Redis的Hash来做一些复合的存储,则Redis性能会高。因为复合数据可以一次获取到你想要的内容,减少IO的次数。而Memcached不支持复合数据结构的存储,在通常场景下网络IO的次数相比使用Redis会高很多。

如果你的场景对数据持久化和数据同步要求很高,则需要使用Redis,因为Memcached不支持数据持久化。在产品升级或者重启系统后Memcached的数据会丢失,而Redis不会。

三. Redis基本命令

  1. 启动Redis: ./redis-server 启动后端口6379

  2. 退出Redis: ctrl+c 或者 redis-cli SHUTDOWN
    收到SHUTDOWN命令后,会先断开客户端,然后根据配置文件进行持久化,最后完成退出。

  3. 连接redis server:redis-cli -h 127.0.0.1 -p 6379

  4. 查看客户端是否连接正常:redis-cli PING

  5. 进入某个数据库: SELECT 1
    redis是多数据库,不支持数据库有自己的名字,各个数据库都是统一编号的,编号从0开始,默认支持16个数据库。所有数据库都只能使用一个密码,不支持每个数据库不同的密码。所以存储不同应用的数据不应该放到同一个redis实例下的不同数据库,而应该使用不同的redis实例来存储不用应用的数据。redis非常轻量级,一个实例也只占1MB左右的内存。

  6. 匹配出符合要求的key: key [pattern] 正则表达式匹配出所有符合的key。

  7. 判断键是否存在: EXISTS key 存在则返回1,不存在返回0。

  8. 删除键:DEL key

  9. 查询键的类型: TYPEkey

  10. 获取/指定字符串二进制: GETBIT key 1 获取key二进制的第一位值, SETBIT key 1 0 设置key二进制第一位的值为0

  11. 递增: INCR key
    如果key所对应的字符串的内容是整数形式,则可以通过该命令来对整数自增1。INCR 是有锁的,可以用来在并发情况下给应用获取唯一的ID或序列编号等。

  12. 递增指定数字: INCRBY key n
    给key的值增加2。

  13. 键名设置惯例:对象类型:对象ID:对象属性
    Redis对于键的名没有什么强制要求,但比较好的一种写法是 “对象类型:对象ID:对象属性” 来命名一个键,如使用 user:1:friends来存储ID为1的用户的好有列表。对于多个单词,则推荐使用“.”来分隔比较好。

  14. 递减: DECR key
    给key递减1

  15. 减去某个值: DECRBY key 2
    给key减去2

  16. 浮点数加减:INCRBYFLOAT key 2.1

  17. 字符串拼接:
    SET key Hello
    APPEND key ” World!”
    append 后字符串为 “Hello World!”

  18. 获取字符串长度: STRLEN key
    一个英文字母长度为1,一个汉字长度为3

  19. 同时设置多个键值:
    MSET key1 value1 key2 value2 key3 value3

  20. 同时获取多个键值:
    MGET key1 key2
    返回结果为:
    1)value1
    2)value2

准备利用2-3周的时间吧Redis基础知识全都学习一遍,这是第一天的内容,接下来继续,加油!
已经浪费了太多时间,不想继续下去,希望看到自己每天进步的样子。
(未完待续)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值