Redis学习笔记

开始学习Redis,做下笔记便于日后查看。使用的系统为centos,前面安装部分略过,从使用开始。

1.配置

Redis默认是只能前台打开很不方便,所以需要修改配置文件Redis.conf 将其中的daemonize属性(守护进程)修改为yes。

2.数据类型

  • string类型:set name "xiaoming"   (存储键值对) get name (根据键取值) 结果为“xiaoming”
  • Hash类型:hmset myhash field1 "hello" filed2 "xiaoming" (存储哈希表 ) hget myhash field1 结果为“hello”
  • List类型:输入:lpush foo redis 返回:(integer)1   输入:lpush foo mongodb  返回:(integer)2  输入:lrange foo 1 10  返回:1)“redis” 2)"mongodb"
  • set类型:输入:sadd runoob redis  返回: (integer)1 表示成功  输入:sadd runoob redis  返回: (integer)0 表示失败 输入:smembers runoob (输出runoob内的成员) 输出:1)“redis”
  • zset集合(有序集合,带一个score):zadd runoob 0 redis 返回(integer)1 zadd runoob 0 mongodb 返回:(integer)1  输入:zrangebyscore runoob 0 100 返回:1)mongodb 2)redis  

3.常用命令

  • redis-cli 用于打开redis客户端 (后面接 -h host -p post -a passwd 远程 )
  • command key_name:常见的如 del(删除) exist(检查是否存在)expire(设置过期时间)ttl(剩余生存时间)type(返回存储指的类型)

3.1字符串命令

  • set key value :设定制定key的值
  • get key: 获取指定key的值
  • getset key value:将给定的key值设为value,并返回key的旧值
  • mget key1 key2:获取所有给定key的值

3.2Hash表

  • hmset hashname key1 "value1" key2 "value2":设定哈希表字段
  • hdel key field1 field2 :删除哈希表多个字段
  • hexists key field :检测是否存储在指定字段
  • hget key field:获取在哈希表中指定字段的值。
  • hkeys hashname:获取hash表中的所有字段名称
  • hlen hashname:获取哈希表中字段的数量
  • hset key field value:将哈希表field字段的值设为value
  • hvals hashname:获取哈希表中所有字段的值

3.3List列表

  • lpush run redis:将key值压入列表
  • blpop key1 timeout :移出并获取列表的第一个元素,如果没有则会阻塞直到超时
  • brpop key2 timeout:移出并获取列表的最后一个元素,如果没有元素则会阻塞直到超时。
  • brpoplpush source destination timeout:从列表中弹出一个值,将弹出的元素插入到另一个列表中。
  • lindex key index:通过索引获取列表中的元素
  • llen key:获取列表的长度

3.3set(集合)

  • sadd run redis:在集合run中添加元素redis
  • smembers run:列出集合run中的元素
  • scard run:获取集合的成员数
  • sdiff set1 set2 :返回给定所有集合的差集
  • spop set:随机返回并移除一个随机的元素

3.4sort set(有序集合)

与set类似,是string类型的集合,且不允许重复,不同之处在于每个元素都会关联一个double类型的分数(可以相同),根据分数大小(从小到大)进行排序。通过哈希表实现,添加删除查找的复杂度都为O(1)

  • zadd run 1 redis:向run集合内添加score为1的元素redis
  • zrange run 0 10 withscores:将有序集合排序后输出0 到10元素
  • zcard set:获取有序集合的成员数
  • zcount set min max:计算有序集合中指定分数区间内的成员数

3.5 hyperloglog(基数)

redis在2.8.9版本中添加的新结构,用于做基数统计。特别是在输入元素的数量或者体积非常非常大时,计算素数所需要的空间总是固定,且很小。但是只能用于计算基数,不存储元素本身,所以不能返回各个元素。

注:基数指数据集中不重复的元素。

  • pfadd run "redis":向数据集中增加新元素
  • pfcount run:统计数据集中基数数量
  • pfmerge deskey sourcekey:将多个hyperloglog合并为一个

4.发布订阅

发布者(pub)发送消息,订阅者(sub)接收消息。

  • subscrebe redischat :订阅redischat频道
  • reading mesages... 阅读消息
  • publish redischat:发布消息在redischat频道

5.事务

redis事务可以一次执行多个命令。分三个阶段:开始事务、命令入队、执行事务。

命令具有原子性,但是事务不具有原子性。事务执行过程中若有命令执行失败,不影响其他命令的执行。

  • discard:取消事务,放弃事务内的所有命令
  • exec:执行所有事务块内的命令
  • multi:标记一个务实块的的开始
  • watch key:监视一个key
  • unwatch :取消对所有key的监视

6.脚本

Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

  • eval script numkeys key:执行lua脚本
  • script exists script:查看脚本是否保存在缓存当中
  • script flish :从缓存中移出所有脚本
  • script kill:杀死正在执行的lua脚本
  • script load script:将脚本添加到缓存中,但不立即执行

7.连接

redis连接命令主要是用于连接redis服务。

  • auth password:验证密码是否正确
  • echo message:验证密码是否正确
  • ping:查看服务是否运行
  • quit:关闭当前连接
  • select index:切换到指定的数据库

你可能感兴趣的:(数据库学习)