Linux安装redis及使用

本文详细介绍了Redis的安装步骤,包括下载、编译、启动及配置,并解释了如何通过服务形式启动Redis,以及如何测试安装是否成功。同时,文章深入探讨了Redis的数据类型,如String、Hash和List,以及它们在实际项目中的应用。

第一步:下载 redis-4.0.6.tar.gz 并解压
第二步:进行解压后的目录后编译:make(如果报错,就执行apt-get install gcc)    如果还是不行就把redis解压文件删除,重新解压
第三步:进入redis下的src目录下安装redis
第四步:启动redis
    (1)第一种方式启动:src/redis-server &    -->$表示后台运行
  (2)第二中方式启动:redis-server /usr/local/redis/redis.conf    启动redis
    (3)src/redis-cli
    (4)src/redis-cli shutdown    -->关闭redis-cli
第五步:检查redis是否安装成功
        netstat -ntlp | grep 6379
第六步:利用service的形式启动redis
        执行命令:vim /etc/init.d/redis (创建脚本)
        向脚本中添加如下内容:
            #!/bin/sh
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
REDISPORT=6379  
EXEC=/usr/local/redis/src/redis-server   
REDIS_CLI=/usr/local/redis/src/redis-cli   

PIDFILE=/var/run/redis.pid   
CONF="/usr/local/redis/redis.conf"  
AUTH="redis"  
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   
                if [ "$?"="0" ]   
                then   
                        echo "Redis is running..."  
                fi   
                ;;   
        stop)   
                if [-f $PIDFILE ]   
                then   
                        echo "$PIDFILE exists, process is not running."  
                else  
                        PID=$(cat $PIDFILE)   
                        echo "Stopping..."  
                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    
                        sleep 2  
                       while [ -x $PIDFILE ]   
                       do  
                                echo "Waiting for Redis to shutdown..."  
                               sleep 1  
                        done   
                        echo "Redis stopped"  
                fi   
                ;;   
        restart|force-reload)   
                ${0} stop   
                ${0} start   
                ;;   
        *)   
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
                exit 1  
esac

第七步:chmod 755 /etc/init.d/redis   service redis start/stop
第八步:连接redis来测试:./redis-cli(在/etc/profile 中添加REDSI_HOME=/usr/local/redis,再在export后面天机REDIS_HOME/src)
第九步:设置开机启动启动redis(找到redis下面的redis.conf文件并打开,找到daemonize熟悉,设置成yes保存退出,设置开机启动 命令:chkconfig redis on)
第十步:设置redis密码,编辑redis.conf下面的#requirepass foobared去掉注释,foobared设置为自己的密码
第十一步:设置远程连接
        同样是在redis.conf文件中注释bind 127.0.0.1    protected-modo no


netstat -tplan | grep redis  判断redis是否启动

 

 


关系型数据库:(SQL)适合处理一般量级数据,安全
    MySQL,Oracle
        
            2.海量数据的增删改查时会显得无能为力
                出现的结果:计算机可能会宕机(计算机卡了,无论多久都无法运行)
            3.海量数据环境下对数据进行维护,也会显得无能为力
                update product set cname = '手机'; //修改所有数据
                把商品表的cname字段,由varchar(64),char(100)
非关系型数据库(NOSQL)适合处理海量数据,效率,不一定安全
    为了处理海量数据,需要将数据型的关系去掉
    
    非关系型数据库设计之初 是为了替换 关系型数据库的
redis
    优点:1.海量数据的增删改查,非常轻松
        2.海量数据的维护非常轻松
    缺点:1.数据和数据之间没有关系,所有不能一目了然
        2.非关系型数据库,没有关系,没有强大的事务保证数据的完整和安全
NOSQL数据分类:
         
   
    

开启方式:
    1.前端开启(无法部署集群)
        利用redis-server(启动服务端) redis-cli(启动客户端)开启
        连接其他的IP或端口
            redis-cli -h 127.0.0.1 -p 6379 (ctrl+c退出服务端 ctrl+a退出客户端)
        
    2.后端启动
        
    

redis数据类型

    redis 使用的是键值对 保存数据(map)
    key:全部都是字符串 value:有五种数据类型
 
    key名:自定义 key名不用过长,否则影响使用效率
    key名不用太短,最好有意义

1.String类型
    定义:字符串类型是redis中最基础和最常用的数据存储类型,它在redis中是二进制的,这便意味着该类型存入和获取的数据相同,在redis中字符串类型的value最多可以容纳的数据长度为512M、

二进制安全和数据安全没有关系
MySQL-关系型数据库,二进制不安全【乱码丢失数据】


redis:二进制数据安全
    

   

   

   

   

注意:incr decr 只能对字符串为数字有效果

string使用环境:
    主要用于保存json格式的字符串

127.0.0.1:6379> get age (得到属性的值)
"46"
127.0.0.1:6379> get myKey
"abc"
127.0.0.1:6379> get name
"asion"
127.0.0.1:6379> set it_user:id:1:username asion (设置表:it_user,属性(id)值(1)属性)
OK
127.0.0.1:6379> set it_user:id:1:email goger@163.com
OK
127.0.0.1:6379> set it_user:id:45:username mark
OK
127.0.0.1:6379> set it_user:id:45:email mark@sina.com
OK
127.0.0.1:6379> key it_user:id:1*
(error) ERR unknown command 'key'
127.0.0.1:6379> keys it_usr:id:1*
(empty list or set)
127.0.0.1:6379> keys it_user:id:1*
1) "it_user:id:1:username"
2) "it_user:id:1:email"
127.0.0.1:6379> keys it_user:id:1:username
1) "it_user:id:1:username"
127.0.0.1:6379> get it_user:id:1:username
"asion"
127.0.0.1:6379> get it_user:id:45:username
"mark"
127.0.0.1:6379> get it_user:id:1:email
"goger@163.com"
127.0.0.1:6379>

注意:flushdb -->删除数据库中全部键值对
2.hash类型

概念:
    

   

注意:如果键值对里面的东西没了,键值对也将消失

127.0.0.1:6379> hset userInfo name asion
(integer) 1
127.0.0.1:6379> hget userInfo name
"asion"
127.0.0.1:6379> hmset userInfo age 22 email goger@163.com
OK
127.0.0.1:6379> hmget userInfo age email
1) "22"
2) "goger@163.com"
127.0.0.1:6379> hgetall userInfo
1) "name"
2) "asion"
3) "age"
4) "22"
5) "email"
6) "goger@163.com"
127.0.0.1:6379>
3 list类型
 (1)lpush向链表的头部放入数据

2.rpush向链表的尾部放入数据

3.lrange获取链表中的数据

4.lpop从链表的左侧弹出第一个数据
    
5.rpop从链表的右侧弹出第一个数据
    
6.链表数据结构在实际项目中那些地方用到?
答:例如,现在后台要统计一下最近登录的10个用户。
    如果现在使用MySQL来完成,形成这条sql来查询数据:select * from user order by logintime desc limit 10;

    换成redis

利用myeclipse连接redis读取数据:
    package redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class test {
        @Test
        public void run1(){
            Jedis jedis=new Jedis("192.168.99.100",6379);
            //jedis.set("name", "张三");
            System.out.print(jedis.get("name"));
        }
}

 

注意:

  • redis中总共默认有16个数据库(0,1,2....15)
  • set name list -->默认把数据存在在数据库0
  • keys *     --->查询redis数据库中全部字段
  • select 1 -->切换数据库1
  • 将数据库0的字段(username)移动到数据库1中
  • move username 1
  • 清空当前数据库数据:flushdb
  • 清空r全部数据库数据:flushall

  • multi:开启事务
    set username list 执行事务 (数据还没有放入数据库中)
    exec:提交事务
    discard:回滚(从最后一次开启事务之后的操作都取消啦)
  • 退出终端:quit ctrl+c
    dbsize:返回当前数据库中key数目
    info:
        
        查询数据库中key数量

  •     
        查看当前连接redis的数量
    判断数据类型:type key
    判断key是否存在:exists key

redis和MySQL区别:
    redis数据存储在内存中
    MySQL数据存储在磁盘中
    MySQL事务:目的为了保证数据完整性,安全
    redis事务:目的为了进行redis语句的批量化执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值