Redis入门笔记

5 篇文章 0 订阅
本文详细介绍了Redis数据库的安装过程,包括下载、编译、配置及设置开机启动。还讲解了Redis命令行客户端的基本使用,如数据类型、常用命令,以及如何进行数据的增删查改。此外,还提到了Redis作为NoSql数据库在大数据场景下的优势,如持久化、主从同步和高效的查询性能。
摘要由CSDN通过智能技术生成

NoSql

MySQL,SQL Server 等这些数据库为关系型数据库,传统项目往往使用这种纯数据库就完全可以满足需求了,随着移动互联网的发展,普通的关系型数据库就不适合把超大量的数据提供出去作并发型的查询,因为数据库的单表性能是有限的,如果该表做的优化好,那么它数据量可达到六七百万,一般来说,可能就只有四五百万。在单表的数据量去到三百万左右的时候,就需要考虑后续海量数据优化了,而使用 NoSql 就是优化方案之一。

NoSql 全称是 Not Only SQL,它不仅仅可以存储数据,还可以缓存数据,可以横向扩展、方便、高效。
NoSql 的常见分类:

  • 键值对数据库:Redis、Memcache
  • 列存储数据库:Hbase、Cassandra
  • 文档型数据库:MongoDB、CouchDB
  • 图形数据库:Neo4J,FlockDB

而 Redis 的优点:

  • 丰富的数据结构,即可以存储多种数据类型(Memcache 只能存储字符串类型)
  • 持久化(Memcache 无法持久化)
  • 主从同步,故障转移,即实现集群
  • 内存数据库,查询效率高

1 Redis 的安装

官网 下载压缩包,我这边下载 5.0.5 版本,下载后传入Linux解压,进入解压文件,输入 make 命令进行编译,然后输入以下命令安装 redis 到 /usr/local/redis 目录:

make install /usr/local/redis

把解压文件中的核心配置文件 redis.conf 复制到 /usr/local/redis/bin 目录下,并作以下修改:

  • daemonize 改成 yes,目的是让 redis 在后台运行
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
  • 修改 redis RDB持久化存放临时备份文件的目录,这里改成 /usr/local/redis/workspaces,注:目录要手动新建
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /usr/local/redis/workspaces
  • 修改 ip 为 0.0.0.0,代表可以让远程连接,不受 ip 限制
bind 0.0.0.0
  • 修改连接密码,这里设置为 123456
requirepass 123456

把解压文件中的 utils/redis_init_script 复制到 /etc/init.d 目录下,目的是为了设置 redis 开机自启动,并作以下修改:

  • 头部添加以下内容设置开机自启动:
#chkconfig: 22345 10 90
#description: Start and Stop redis

添加后执行以下命令,正式让 Redis 开机自启动:

chkconfig redis_init_script on
  • 修改文件目录指向:
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/bin/redis.conf"

同时由于在核心配置文件中添加了连接密码,所以在脚本中关闭 Redis 逻辑还需要把该密码填入进去:

$CLIEXEC -a "123456" -p $REDISPORT shutdown

最后在 /etc/init.d 目录下使用 ./redis start 启动 Redis,使用 ./redis stop 关闭 Redis。

2 Redis命令行客户端基本使用

在上述安装步骤里没有指定安装目录,Redis 会安装到 /usr/local/bin 中,此时任意地方输入 redis-cli 即可打开 Redis 命令行客户端,如果指定了安装目录,则需要添加环境变量,如输入命令 PATH="${PATH}:/usr/local/redis/bin" (这样子添加,重启之后就会失效,想要长久设置就需要修改 etc/profile 文件,在结尾加上 PATH=${PATH}:/usr/local/redis/bin)即可。
检查 Redis 服务端是否正常运行,可以输入以下命令:

redis-cli -a 123456 ping

其中 -a 123456 是上述安装时候修改核心配置文件时设置的密码,当 Redis 正常运行时,就会返回 PONG
输入 redis-cli 进入到命令客户端后,还需要输入密码 -auth 123456 获得授权后方可进行后续操作。

可以下载 RedisDesktopManager 这个 redis 的图形客户端,但记得远程连接的时候,Linux 系统要开启对应的端口

3 Redis 的命令参考和数据类型

《Redis 命令参考》

  • keys *:查看所有的 key ,不建议在生产使用,有性能影响
  • type key:查看 key 类型,如:type name
  • Redis 的数据库有 16 个,可以在核心配置文件中设置,使用 select index 命令可以切换数据库,切换之后命令行光标会有当前的数据库索引
  • flushdb:删除当前数据库下所有的数据
  • flushall:删除所有数据库中的数据

3.1 字符串类型

  • get/set/del:查询、设置、删除键值,如 set name seiei
  • set key value ex time:设置键值附带过期时间,如 set name seiei ex 10
  • expire key time:设置某键值的过期时间,如 expire name 10
  • ttl keytime to leave 的缩写,查看某键值的过期时间,-1 表示永不过期,-2 表示已经过期
  • setnx key valueSET if Not eXists的缩写,设置已经存在的 key 时,不会覆盖,如 set name taka
  • append key value:合并字符串键值,如 append name 123,此时 name 值为 seiei123
  • strlen key:获取字符串的长度,如 strlen name
  • incrby key value:累加给定值,如 incrby age 10,给定值可以为负数
  • incrbyfloat key value:累加给定值(float 类型)
  • getrange key start end:截取数值,end-1 时,表示截取到最后
  • setrange key start newdata:从 start 位置开始替换数据,如 setrange name 1 takaaaaaaa,此时替换值字符串长度比原值要大,即此时获取到数值为 stakaaaaaaa
  • mset [key value]:连续设值,如 mset name seiei age 18
  • mget [key]:连续取值,如 mget name age
  • msetnx:连续设置,如果键值已存在则不设置,如 msetnx name taka age 28,注如果设置的键值中有一条已存在,则其余的键值也不会设置
  • del key:删除键值

3.2 hash 类型

hash 类型就如同 Java 中的 map,不过它不能储存嵌套对象

  • hset key property value:设置对象键值,如 hset user name seiei
  • hmset key property value:设置对象键值,如果已存在键值,则不提换
  • hmset key [property value]:设置对象中的多个键值对
  • hget key property:获取对象某个键名对应的数值
  • hmget key [property]:获取对象多个键名对应的数值
  • hgetall key:获取这个对象的内容
  • hlen key:查看该对象有多少个属性
  • hkeys key:获取该对象的所有属性名
  • hvals key:获取该对象的所有属性值
  • hexists key property:查看该对象是否存在某个属性
  • hdel key property:删除对象的某个属性
  • del key:删除对象

3.3 list 类型

  • lpush key [member..]:构建一个 list 类型数据,从左边开始添加数据,即每个添加的数值都是从索引为 0 那条数据向左插入,如 lpush user seiei taka 获得的列表为 [taka, seiei]
  • rpush key [member..]:构建一个 list 类型数据,从右边开始添加数据,如 rpush user seiei taka 获得的列表为 [seiei, taka],所以正常情况下应该使用 rpush 更适合理解
  • lrange key start end:获取数据,start 表示开始索引,end 表示结束索引(-1 表示获取到列表最后)
  • llen key:获取列表长度
  • lpop key:从列表左侧剔除一个数据
  • rpop key:从列表右侧剔除一个数据
  • lindex key index:根据索引获取列表中对应的数值,如 lindex listOfNum 0
  • lset list index value:根据索引替换列表对应的数值,如 lset listOfNum 0 seiei
  • linsert list before/after pivot value:插入新的数值,注意 pivot 这里是存在于列表中的数值,而不是索引,如 linsert listOfNum before seiei taka
  • lrem key count value:删除数据,其中 count 表示删除的个数,如 lrem listOfNum 1 seiei
  • ltrim list start end:截取数值并替换原来的列表,如 ltrim listOfNum 1 2

3.4 set 类型

  • sadd key [member..]:构建一个 set 类型数据,添加数据,如 sadd setOfNum 1 2 3 4
  • smembers key:获取 set 的数据,如 smembers setOfNum
  • scard key:获取 set 的长度
  • sismember key member:判断某个数值是否存在于 set 中
  • srem key [member..]:删除数值
  • spop key count:随机删除 count 个数值
  • srandmember key count:随机获取 count 个数值,如 srandmember setOfNum 3
  • smove source destination member:将源 set 中的某个数值移动到目标 set 中,如果源 set 和 目标 set 都有该移动的数值,则从源 set 中删除该数值,如 smove setOfNum setOfNum2 99
  • sdiff key1 key2:获取差集,将 key1 有而 key2 没有的元素列出来
  • sinter key1 key2:获取交集
  • sunion:获去并集

3.5 zset 类型

zset 类型可以理解为排序的 set 类型,其包含的每个元素都有对应一个分数值 score,根据这个 score 值进行排序(score 数值可以相同)。

  • zadd key [score value..] :构建一个 zset 类型数据,添加数据,如 zadd setOfNum 10 1 20 2
  • zrange key start end:获取 zset 内容,start 为开始索引,end 为结束索引
  • zrange key start end withscores:同上,不过附带 score 数值
  • zrangebyscore key minScore maxScore:根据 score 的数值范围获取 zset 内容,如 zrangebyscore zsetOfNum 10 30
  • zrank key value:获取对应数值的索引
  • zscore key value:获取对应数值的 score
  • zcard key:统计 zset 的个数
  • zcount key minScore maxScore:统计score 数值在 minScoremaxScore之间的个数,如 zcount zsetOfNum 10 10 表示获取 score 数值为 10 的元素个数(包括 10),zcount zsetOfNum (10 (20 表示获取 score 数值范围在 1020 之间的元素个数(不包括 1020
  • zrem key value:删除对应的数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值