沃梦达 / IT编程 / 数据库 / 正文

redis 入门笔记

redis简介:Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容;redis数据库是提供内存存储和持久化,由于是内存存储因此Redis可以在一秒内...

redis简介:

  Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容;redis数据库是提供内存存储和持久化,由于是内存存储因此Redis可以在一秒内读写超过10万个键值,由于将数据存储在内存中,当程序退出后内存中的数据会丢失,因此redis提供了持久层,即可以将内存中的数据异步写入到硬盘中,同时又不影响提供服务。

redis支持的键值类型:

  • 字符串类型:String
  • 散列类型:map
  • 列表类型:一个可从左或从右写入的队列,可以实现栈和队列 ,list
  • 集合类型:set
  • 有序集合类型:zset

redis功能丰富:

  • 可以用作缓存、队列等系统中
  • 可以为每个键设置生存时间(TTL--Time To Live)
  • 可以基于redis支持“发布/订阅”的消息模式构建聊天室等系统(Redis贡献者之一Pieter Noordhuis 提供了一个用该模式开发的聊天室例子------https://gist.github.com/348262)

redis安装:

  安装redis,大家可以百度,一大堆,一些大佬分享的特别不错

redis启动:

  • 直接启动:直接运行redis-server即可,redis服务器默认会使用6379端口,启动命令 $redis-server (使用默认端口启动)  $redis-server --port 6380 (指定端口启动)  
  • 通过初始化脚本启动:在Linux系统中可以通过初始化脚本启动redis,使redis可以随着系统自动运行,在redis源代码目录的utils文件夹中有一个redis_init_script的初始化脚本文件,并在初始化脚本中追加两行代码(橙色的部分),内容如下
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database # as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
  • 然后我们需要配置redis的运行方式和持久化文件、日志文件的存储位置等,具体步骤如下:
  1. 配置初始化脚本:首先将初始化脚本复制到/etc/init.d目录中,文件名为 “redis_端口号”,然后修改脚本第6行的REDISPORT变量的值为同样的端口号。
  2. 创建需要的文件夹,即/etc/redis(存放redis配置文件)、/var/redis/端口号(存放redis的持久化文件)
  3. 修改配置文件:首先将配置文件模板(位于源代码目录的根目录中)复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),然后按照下表其中的部分参数进行编辑配置。
daemonize yes 使redis以守护进程模式运行
pidfile /var/run/redis_端口号.pid 设置redis的PID文件位置
port 端口号 设置redis监听的端口号
dir /var/redis/端口号 设置持久化文件存放位置

到现在为止就可以使用 /etc/init.d/redis_端口号start来启动redis了,如果要跟随系统自启动还需要执行命令:$sudo update-rc.d redis_端口号 defaults (针对ubuntu操作系统),如果是centos操作系统,命令为chkconfig redis_端口号 no(这样就可以通过service redis_端口号 start 启动了)。

redis基本命令:

  • 键值操作:
  1. 获取符合的键值:KEYS  pattern (pattern支持glob风格通配符格式如下表所示)
匹配一个字符
* 匹配多个字符
[] 匹配括号间的任一字符,可以使用“-”表示一个范围,如a[b-d]可以匹配“ab”、“ac”,“ad”
\X 匹配字符X,用于转义符号
  1. 判断一个键是否存在:EXISTS key  (返回整型1为存在,返回0为不存在)
  2. 删除键:DEL key[key...]  (可以删除一个或多个键,返回值是删除键的个数)
  3. 获取键值的数据类型:TYPE key
  • 字符串类型存储:
  1. 赋值与取值:
    1. SET key value   
    2. GET key (当键不存在时,返回结果为空)
  2. 扩展:
    1. 生成递增数字作为key:INCR key
    2. 获取value字符串长度:select key  
  • 散列类型存储:
  1. 赋值与取值:
    1. HSET key field value
    2. HSET key field
    3. HMSET key field value [field value ...]
    4. HMGET key field [field ...]
    5. HGETTALL key
    6. HEXISTS
      1. 例子:HSET car price 500,HSET car name BMW
  2. 扩展:散列类型相当于存储的是一个对象,如下表所示:
name price
BMW 500
B 1000
  • 列表类型(至多2^32-1个字符串)
  1. 向列表两端增加元素
    1. LPUSH key value [value ...]  (向左边增加)
    2. RPUSH key value [value ...]  (向右边增加)
  2. 从列表两端弹出元素
    1. LPOP key  (从左侧弹出一个元素)
    2. RPOP key (从右侧弹出一个元素)
  3. 获取列表中元素的个数
    1. LLEN key 
  4. 删除列表指定的值
    1. LREM key count value
  5. 这里补充一点,Java是通过序列化对象列表实现redis整存整取的
  • 集合类型(至多2^32-1个字符串)
  1. 增加/删除元素
    1. SADD key member[member ...]
    2. SREM key member[member ...]
  2. 获取集合中的所有元素
    1. SMEMBERS key
  3. 判断元素是否在集合中
    1. SISMEMBER key member
  • 有序集合类型
  1. 增加元素
    1. ZADD key score member [score member ...]
  2. 获得元素的分数
    1. ZSCORE key member
  3. 获得排名在某个范围的元素列表
    1. ZRANGE key start stop [WITHSCORES]
    2. ZREVRANGE key start stop [WITHSCORES]

        说明:当stop为-1时表示最后一个元素

  4.获取指定分数范围的元素

      1.ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]   例如 ZRANGEBYSCORE scoreboard 80 (100  ,表示获取分数在80,100之间的同学,“(”表示不包含100

 

 【未完待续】

本文标题为:redis 入门笔记