Linux安装操作redis

安装redis

  1. 环境准备:yum install gcc-c++,gcc环境
  2. 上传解压redis安装包
  3. 安装redis,进入解压目录,输入make命令进行安装。

安装注意事项:

  • 如果没有gcc环境,安装不成功
  • 如果有gcc环境,安装过程中也可能出错, 类似于zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录这种错误, 原因是默认的使用MALLOC为jemalloc的环境去建立redis, 但是jemalloc没有, 会报错。jemalloc没有看是有libc, 因此编译的时候加上MALLOC =libc就可以了
  • make MALLOC=libc安装在了redis/src目录下, 可以指定安装目录,命令为make install PREFIX=/aaa/bbb/redis MALLOC=libc

安装后启动

redis前端启动:
进入安装后的bin目录下, ./redis-server命令启动,启动后显示类似于面包的图形。 不过一旦Ctrl + c或者会话关闭redis服务就会关闭。

redis后端启动:
解压后的redis.conf文件拷贝只bin目录, 修改daemonize为yes, 启动命令改为./redis-server redis.conf, 可以通过ps -ef | grep redis查看启动情况。

启动后关闭

强制性关闭:kill -9 redis服务进程号, 容易造成数据丢失

redis提供命令关闭:./redis-cli shutdown

redis命令行客户端

同样进入redis安装后的bin目录, ./redis-cli命令进入redis命令行客户端, 输入命令实现对redis的操作。
命令可以携带参数-h、-p。
-h:连接目标服务的IP。
-p:连接 目标服务的端口。
带参数命令:./redis-cli -h 127.0.0.1 -p 6379。

redis图形化界面客户端

在windows上安装redis的图形化界面客户端。redis-desktop-manager-0.8.0.3841.exe
连接redis服务,注意虚拟机关闭防火墙(service iptables stop)
可以使用图形化客户端启动命令行,redis服务名称上右击,选Console。
输入命令实现对redis的操作。

redis的java客户端jedis

jedis对redis的操作就类似于jdbc对数据库的操作。
导包:commons-pool版本.jar、jedis-版本.jar。
jedis连接操作:

import redis.clients.jedis.Jedis;

public class JedisTest {

    public static void main(String[] args) {
        // 创建jedislianjie
        Jedis jedis = new Jedis("192.168.130.128", 6379);
        // 使用jedis操作redis, 就是redis命令
        jedis.select(1);
        String setResult = jedis.set("name", "zhangsan");
        String getResult = jedis.get("name");
        System.out.println(setResult + ":" + getResult);
        // 释放资源
        jedis.close();
    }
}

jedis有频繁创建销毁资源的问题, 就跟jdbc一样,使用jedispool操作redis:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisPoolTest {

    public static void main(String[] args) {
        // 创建jedispool
        JedisPool jedisPool = new JedisPool("192.168.130.128", 6379);
        // 从jedispool中获取jedis对象
        Jedis jedis = jedisPool.getResource();
        // jedis操作redis
        jedis.select(1);
        String setResult = jedis.set("age", "18");
        String getResult = jedis.get("age");
        System.out.println(setResult + ":" + getResult);
        jedis.close();
        jedisPool.close();
    }
}

redis命令

redis是以键值对key/value格式存储。value的类型可以是字符串(String),散列(Hash),列表(list),集合(sets),有序集合(sorted sets、zsets)

字符串类型(key, value)

存值:set key value, 成功返回OK

取值:get key, 返回对应key的value, 如果没有返回null

value可以转换成整形时,可以设置从0递增:incr count。key为count, 每执行一次,count对应的value加1。key不存在自动创建并赋值为0, 执行第一次后为1。

value可以转换成整形时,可以设置从某一值递减:decr count。key为count, 每执行一次,count对应的value减1。key不存在自动创建并赋值为0, 执行第一次后为-1。

value可以转换成整形时,可以设置按照指定数值递增:incrby key 递增值。如incrby count 4。count从0开始,每次递增4。

value可以转换成整形时,可以设置按照指定数值递减:decrby key 递减值。如decrby count 4。count从0开始,每次递增4。

散列类型(key, (field, value))

存值:hset key field value。如 hset user name 张三,成功返回1。
取值:hget key field。如 hget user name, 返回对应的name值。没有返回null
存多个值:hmset key field1 value1 field2 value2。如 hmset user age 18 address 北京,成功返回OK。
取多个值:hmget key field1 field2 field3。如 hmget user name age address,有值返回,没值返回空。
查看包含field数量:hlen key。如hlen user
获取key下的field/value:hgetall key 。如hgetall user
获取所有的field:hkeys key 。如hkeys user
获取所有的value:hvals key 。如hvals user
删除指定field:hdel key field 。如hdel user field

列表(key values[value1, value2, value3……])

list左侧存值:lpush key values[value1, value2, value3……]。如lpush mylist 1 2 3 4。成功返回list的数量。
list右侧存值:rpush key values[value1, value2, value3……]。如rpush mylist 5 6 7 8。
链表元素数量:llen key。 如llen mylist。
指定位置元素:lrange key start end。如lrange mylist 3 5。start 可以为负数。比如-1代表最后一个, -2代表倒数第二个。start和end为索引。上面的存储values为4 3 2 1 5 6 7 8,end大于最后一个数的索引了按照最后一个值算。
弹出左边元素:lpop key。如lpop mylist。
弹出右边元素:rpop key。如果弹出则values列表中不在含有此元素。

集合(key values[value1, value2, value3……])

集合的存储和list一样, 不同的是set中的元素不能重复,而且set在服务端可以完成多个sets的聚合运算。

添加数据:sadd key values[value1, value2, value3……],如果set中已经有了不会重复添加。返回成功添加的元素个数。比如:sadd myset 1 2 2 3 3 4
列举set中元素:smembers key。如:smembers myset。
删除指定成员:srem key members。如srem myset 1 2。成功返回1
两个集合取并集:sunion set1 set2。属于set1或者是属于set2
两个集合取交集:sinter set1 set2。属于set1而且属于set2
两个集合去差集:sdiff set1 set2。属于set1但是不属于set2

有序集合

集合存储类型和set一样,不同的是有序集合每一个成员都有一个分数与之关联,redis可以通过分数来为集合中的成员进行排序。

添加数据:zadd key score member1 score member2……。如zadd myzset 1 a 2 b 3 c,返回添加的数据个数。
列举zset中的元素:zrange key start end [withscores]:获取集合中角标为start-end的成员。withscores 表示返回结果包含分数。
给集合中成员增加分数:zincrby key score member。如zincrby myzset 0.1 a。返回增加后的a的分数。

删除元素:zrem key member[member1,member2……]。如 zrem myzset a b。返回删除的个数。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容