redis数据库

前言

  SQL数据库,指关系型数据库。有MySQL、SQL Server等

  NoSQL(Not Only SQL)数据库,指非关系型数据库。有Redis、mongoDB、CouchDB、Cassandra、riak、membase等

  NoSQL数据库相较与传统关系型数据库的优点(传统关系型数据库无法适用web2.0海量数据的操作维护):

  • 易扩展(它属于非关系型的,数据之间没有关系)
  • 灵活的数据类型(不需要对读写的数据建立字段)
  • 大数据量,高性能(对于大数据量和高并发的读写性能支持很好)
  • 高可用(在不影响系统性能情况下,可以使用框架)

redis for window (zip)

  redis.windows.conf 文件配置密码:requirepass 123456

  加入服务:redis-server --service-install redis.windows.conf

  卸载服务:redis-server --service-uninstall

  开启服务:redis-server --service-start

  停止服务:redis-server --service-stop

redis使用(jedis)

  redis默认端口为6379

  redis服务器根据配置文件启动

        //设置端口
        Jedis jedis = new Jedis("主机名", 6379);
        jedis.auth("密码");
        jedis.set("name","devon");
        String name = jedis.get("name");
        System.out.println(name);
        //4.释放资源
        jedis.close();
Jedis数据库连接测试
        //获得连接池
        JedisPoolConfig config = new JedisPoolConfig();
        //设置最大连接池
        config.setMaxTotal(30);
        //设置最大空闲连接数
        config.setMaxIdle(10);
        //获得核心对象
        JedisPool jedisPool = new JedisPool(config, "主机名", 6379);
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            jedis.auth("密码");
            jedis.set("name","张三");
            String value = jedis.get("name");
            System.out.println(value);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (jedis!=null){
                jedis.close();
            }
            if (jedisPool != null){
                jedisPool.close();
            }
        }
Jedis连接池数据库连接测试

key

keys *  #查询所有key

keys str?   #查询以字符串str开头的key

del key1 key2 key3 ...   #删除多个key

exists key  #判断key是否存在,存在返回1不存在返回0

rename key newkey   #对key进行重命名

expire  key times(秒)   #设置过期的时间

ttl key  #查看key所剩的时间,若没有设置,则返回-1

type key   #获取指定key的类型

string

set key value  # 赋值

get key  # 获取值

get set company baidu ==> get company , set company baidu del key  # 删除

incr num  # num 的值+1 没有默认为0 加一就是1 如果num类型不能做加一运算 报错

decr num   #减一 同理

incrby num 5  #num += 5

decrby num 5  #num -= 5;

append num 5  #num 后面追加字符串“5” 如果num不存在默认为空字符串

hashMap

hset myhash username jack  #设置一个键值对 

hmset myhash username rose age 21  #设置多个键值对

hget myhash username  #获取一个键的值

hmget myhash username age  #获取多个hash键位的数据

hgetall myhash   #获取某个hash的所有键值对

hdel myhash username age  #删除特定的键值

hgetall myhash  #获取myhash的所有键值对

del myhash  #删除整个集合

hexists myhash username  #判断某个键是否存在

 list

1.两端添加:lpush、rpush

lpush list 1 2 3  #从左侧往list表中插入1 2 3

rpush list a b c  #从右侧忘list表中插入a b c

2.查看列表:lrange

lrange list 0 -1  #从头到尾查看

lrange list 0 5   #从开始到第5个查看

3.两端弹出:lpop、rpop

lpop list   #从左边弹出第一个数

rpop list  #从尾部弹出第一个数

4.获取列表元素个数:llen

llen  list   #查看元素个数

5.扩展命令:lpushx、rpushx、lrem、lset、rpoplppush

lpushx list x   #插入x到list表的开头,与lpush区别是,lpush插入的list为空的话则建一个list再插入,lpushx不会插入

rpushx list y   #插入y到list表的尾部

lrem list 2 3   #从头到尾删除2个3

lrem list -2 1   #从尾到头删除2个1,负号代表从后往前

lrem list 0 2   #删除所有2

lset list 3 mmm   #在list表第3个下标设置mmm

linset list before a yy   #在list表中a之前插入yy

linset list after b xx   #在list表中b之后插入xx

rpoplpush list1 list2   #将list1表的开头压入到list2表的结尾

set 

sadd  myset  a b c #往myset中存入a,b,c

srem myset  a   # 删除a

smembers  myset   #查看set中的值

sismember myset  a   #查看a是否存在myset中

sdiff  myset1   myset2     #差集运算,两个集合的顺序有关

sinter  myset1 myset2     #交集运算 

sunion  myset1 myset2  #并集运算

scard  myset  #查询set中值的数量

srandmember  myset  #随机返回一个值

sdiffstore 新集合 集合1 集合2  #集合1,集合2的差值存到新集合中

sinterstore 新集合 集合1 集合2  #集合1,集合2的交集存到新集合中

sunionstore 新集合 集合1 集合2  #集合1,集合2的并集存到新集合中

sorted-set

sorted-set:每个成员都有一个分数与之关联,成员唯一,可以对应多个分数

zadd mysort 10 a 20 b 30 c   #存入值a的分数是10、b的分数是20、c的分数是30

zscore mysort a   #获得a的分数

zrem mysort a b   #删除成员a、b

zremrangebyrank mysort 0 4   #删除排名0-4的成员

zremrangebyscore mysort 10 30   #删除分数10-30的成员

zrange mysort 0 -1   #查看所有成员

zrange mysort 0 -1 withscores   #查询成员及分数,从小到大

zrevrange mysort 0 -1 withscores   #查询成员及分数,从大到小

zrangebyscore mysort 0 100 withscores   #显示0-100分数的成员

zrangebyscore mysort 0 100 withscores limit 0 2   #显示0-100分数的成员的前两名

zincrby mysort 10 c   #给c加上10

zcount mysort 80 100   # 显示80-100分数的成员个数

原文地址:https://www.cnblogs.com/shuzhixia/p/14560496.html