redis入门基础

  • 环境: centos

一、安装

sudo su
cd
wget http://labfile.oss.aliyuncs.com/courses/106/redis-2.8.4.tar.gz
tar -xzvf redis-2.8.4.tar.gz
cd redis-2.8.4
make

几个文件:

  • 服务端:src/redis-server
  • 客户端:src/redis-cli
  • 默认配置文件:redis.conf
# 设置环境变量
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/

# 运行测试
cd /root/redis-2.8.4
make test

# 启动redis-server
redis-server

二、服务命令

  1. 使用服务启动redis服务: sudo service reids-server start
  2. 查看redis状态 : ps -ef | grep redis , netstat -nlt|grep 6379
  3. redis-cli 交互环境乱码: redis-cli --raw

三、数据类型

帮助命令

help set    # 查看set命令的帮助

1. string

  • set key value: 创建
  • get key: 索引
$ sudo service redis-server start
$ sudo su
$ cd
$ redis-cli
> set mykey somevalue
> get mykey

加法器

> set counter 100                   # 初始化
> incr counter                      # +1
> incr counter                      # +1
> incrby counter 50                 # +50 自定义计数
  • incr 让value成为一个整数, 并加法
  • decr decrby 减法
> mset key1 value1 key2 value2      # 批量创建
> mget key1 key2                    # 批量索引

2. lists

线性有序

如列表 mylist

# push 操作
> rpush mylist A                    # 插入元素到尾部
> rpush mylist B
> lpush mylist first                # 插入新元素到头部
> lrange mylist 0 -1                # 索引, 0 是第一个, -1是倒数第一, -2 是倒数第二...

# pop 操作, 弹出(删除)

> rpop mylist                       # 从右边弹出一个元素
> lpop mylist                       # 从左边弹出一个元素
> del mylist                        # 删除

list 存在阻塞

3. hashes(散列)

字符串字段和字符串值之间的映射;

> hmset user:1000 username xiaoming birthyear 2019 verfied 1
                                    # 创建一个多域的hash表
> hget user:1000 username           # 获取指定单域
> hget user:1000 birthyear
> hgetall user:1000                 # 获取key的所有信息

> hincrby user:1000 birthyear 10    # 修改增加了10

4. 无序集合 set

不允许宝行相同的成员的属性(非常方便去重);
以O(1)时间复杂度完成添加删除及测试元素是否存在

> sadd myset 1 2 3                  # 创建一个无序集合myset
> sismember myset                   # 查看集合是否存在, 成功1,失败0

5. 有序集合

无重复元素的字符串集合, 不同之处是有序集合每个成员都关联了一个权值;
成员唯一, 但权值可重

> zadd hackers 1990 "a"
> zadd hackers 1995 "df"
> zadd hackers 1900 "ddz"

> zrange hackers 0 -1               # 查看
> zreverange hackers 0 -1           # 反序查看
> zrange hackers 0 -1 withscores    # 返回记录值

四、常用命令

  1. exists and del
  • exists key: 判断 key是否存在 存在1, 否0;
  • del key: 删除key, 成功1,失败0(key不存在)
  1. type and keys
  • type key: 返回元素数据类型(string,list, set, zset,hash)
  • keys key-pattern: 返回匹配key的列表, 如 keys ming* (返回以ming开头的keys)
  1. randomkey and clear
  • randomkey: 随机获取一个已存在的key
  • clear: 清除界面
  1. rename and renamenx
  • raname oldname newname: 重命名; newname存在则会覆盖
  • renamenx oldname newname: 重命名; newname存在则失败
  1. dbsize
  • dbsize: 返回key总数

五、时间相关命令

  1. 限定key生存时间
  • expire key seconds
  1. 查询key剩余生存空间
  • ttl key
  1. 清除key
  • flushdb: 清空当前库中的所有键
  • flushall: 清空所有库中的所有键

六、设置相关命令

redis配置文件

  • config get: 读取运行的redis服务器的配置参数
  • config set: 更改

如:

config get requirepass              # 查看密码
config set requirepass 123456       # 设置密码位123456
auth 123456                         # 认证密码

config get *                        # 查看所有(匹配)
  • config resetstat充值数据统计报告

七、查询信息

  • info [section]: 查询redis相关信息
[section]

server                              # Redis server 的常规信息
clients                             # Client 的连接选项
memory                              # 存储占用相关信息
persistence                         # RDB and AOF 相关信息
stats                               # 常规统计
replication                         # Master/Slave 请求信息
cpu                                 # CPU 占用信息统计
cluster                             # Redis 集群信息
keyspace                            # 数据库信息统计
all                                 # 返回所有信息
default                             # 返回常规设置信息

八、安全

密码配置文件 redis.conf

$ sudo service redis-server restart # 重启
  • 密码认证(登录)
$ redis-cli
> auth 密码
或
$redis-cli -a 密码

九、主从复制

分担服务器压力, 部署多台服务器,, 分别用于缓存的读和写,
用于写的为主服务器, 读的为从服务器;

建立主从关系:

# slave 端执行命令
# slaveof ipaddress:port
> slaveof 127.0.0.1:6379

# 如何master服务器设置了密码,则需要在从服务器中设置好密码
> config set masterauth <password>

十、事务处理

当client 发送multi命令后进入事务, 后续命令不会执行, 而是存放到队列中, 执行exec后 redis按顺序执行队列中的命令;

(实际中不能依赖redis事务保证数据一致性)

> multi
> set name a
> set name b
> exec
> get name

十一、持久化机制

将内存中的数据长久存到磁盘中;

两种方式:

  1. snapshotting (快照), 将数据存到文件里;
  • save 900 1: 900s内如果超过1个key被修改, 则发起快照保存
  1. Append-only file (aof), 将读写操作放到文件中;
# 配置文件
appendonly yes                          //启用 aof 持久化方式

# appendfsync always                    //收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化

appendfsync everysec                    //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

# appendfsync no                        //完全依赖 os,性能最好,持久化没有保证

虚拟内存, 在2.6以上版本取消了(在后面的版本由redis自身管理)

十二、参考

posted @ 2019-03-07 23:26 小鸣的微笔记 阅读(...) 评论(...) 编辑 收藏